Algorithm/brute force

[백준] C++ 알고리즘 10974번 - 모든 순열문제

낭강 2021. 6. 2. 18:20
문제

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

 

10974번: 모든 순열

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

www.acmicpc.net

소스코드
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
vector<int> a;
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) a.push_back(i + 1);
    do {
        for (int i = 0; i < n; i++) {
            cout << a[i] << " ";
        }
        cout << "\n";
    } while (next_permutation(a.begin(), a.end()));
}
해설

do while 사용이유 - 처음 순열의 첫 순열을 구하지 못한상태로 다음 순열은 구할 수 없으니

next_permutation - 순열을 구하고 싶은 순열 1 2 3 4 에 대해서 그 다음 순열을 구해줌 1 2 4 3

헤더파일 - algorithm을 사용