백준 10974번: 모든 순열 (C++)
2023. 1. 21. 02:54ㆍ알고리즘/브루트포스
https://www.acmicpc.net/problem/10974
풀이
골드5 문제 푸는데 구현이 되게 까다로운 문제가 순열로 너무 쉽게 풀리는 것을 보고 현타와서 순열 알고리즘을 몇개 풀었다.
next_permutation(v.begin(), v.end()) 을 실행하면 입력받은 배열을 바로 다음 순열로 변경한다.
do while을 쓴 이유는 next_permutation(v.begin(), v.end()) 실행 시 배열을 변경시키기 때문이다.
정렬된 배열을 한번 출력하기 위해 사용했다.
전체 코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N;
vector<int> v;
cin >> N;
for (int i = 1; i <= N; i++) v.push_back(i);
sort(v.begin(), v.end());
do {
for (int i = 0; i < N; i++) cout << v[i] << ' ';
cout << '\n';
} while (next_permutation(v.begin(), v.end()));
}
'알고리즘 > 브루트포스' 카테고리의 다른 글
백준 13140번: Hello World! (C++) (0) | 2023.01.21 |
---|---|
백준 2309번: 일곱 난쟁이 (C++) (0) | 2023.01.21 |
백준 2890번: 카약 (C++) (0) | 2023.01.19 |
백준 1057번: 토너먼트 (C++) (0) | 2023.01.17 |
백준 1051번: 숫자 정사각형 (C++) (0) | 2023.01.17 |