본문 바로가기

숨막히는 알고말고/문제 풀이

[Baekjoon] 모든 순열

👀 문제 설명

문제

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

 

입력

첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.

 

출력

첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.

 

예제 입력 1

3

 

예제 출력 1

1 2 3 

1 3 2 

2 1 3 

2 3 1 

3 1 2 

3 2 1

 

✍🏻풀이

algorithm 헤더의 next_permutation 함수를 사용해서 쉽게 구할 수 있다.

 

코드

//  모든 순열(https://www.acmicpc.net/problem/10974)

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(NULL); cout.tie(NULL);

    int N;
    cin >> N;

    vector<int> v;
    for (int num = 1; num <= N; num++) {
        v.push_back(num);
    }

    do {
        for (int i = 0; i < N; i++) {
            cout << v.at(i) << " ";
        }
        cout << "\n";
    } while (next_permutation(v.begin(), v.end()));

    return 0;
}

'숨막히는 알고말고 > 문제 풀이' 카테고리의 다른 글

[Baekjoon] 공주님을 구해라!  (0) 2021.03.30
[Baekjoon] 설탕 배달  (2) 2021.03.29
[Baekjoon] 로봇 청소기  (0) 2021.03.26
[Baekjoon] 경사로  (0) 2021.03.25
[Baekjoon] 녹색 옷 입은 애가 젤다지?  (0) 2021.03.24