Koala - 10기/코딩테스트 준비 스터디

[백준/C++] 10974번 모든 순열

_dudu 2023. 3. 10. 18:04

 

 

 

 

풀이

순열을 사용한 완전탐색 기법 이용

순환 첫번째 값을 1~n까지 진행하여 모든 순열을 표시해주면 되는데

algorithm헤더의 next_permutation을 이용하여 편리하게 모든 순열을 구할 수 있었다.

vector에 1~n까지 차례로 값을 넣어주고 next_permutation을 이용해 순열을 구하는 코드이다.

 

 

코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin >> n;
	vector<int> p(n);

	for (int i = 1; i <= n; i++)
		p[i - 1] = i;

	do {
		for (auto a : p)
			cout << a << ' ';
		cout << '\n';
	} while (next_permutation(p.begin(), p.end()));
	return 0;
}

 

 

 

  https://www.acmicpc.net/problem/10974

 

10974번: 모든 순열

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

www.acmicpc.net