[BOJ] 백준_10972번_다음 순열_C/C++백준 알고리즘2021. 9. 22. 17:21
목차
문제 출처
https://www.acmicpc.net/problem/10972
문제
1부터 N까지의 수로 이루어진 순열이 있다. 이때, 사전순으로 다음에 오는 순열을 구하는 프로그램을 작성하시오.
사전 순으로 가장 앞서는 순열은 오름차순으로 이루어진 순열이고, 가장 마지막에 오는 순열은 내림차순으로 이루어진 순열이다.
N = 3인 경우에 사전순으로 순열을 나열하면 다음과 같다.
- 1, 2, 3
- 1, 3, 2
- 2, 1, 3
- 2, 3, 1
- 3, 1, 2
- 3, 2, 1
입력
첫째 줄에 N(1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄에 순열이 주어진다.
출력
첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다.
코드
//[BOJ] 10972번_다음 순열
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N;
cin >> N;
if ((N < 1) || (N > 10000))
{
cout << "N의 범위를 벗어났습니다." << endl;
exit(1);
}
int* str = new int[N];
for (int i = 0; i < N; i++)
{
cin >> str[i];
}
if (next_permutation(str, str + N))
{
for (int i = 0; i < N; i++) {
cout << str[i] << " ";
}
}
else
cout << "-1" << endl;
return 0;
}
다음 순열을 구하는 STL이 있어서 어려움 없이 구현할 수 있었다.
728x90
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_22864번_피로도_C/C++ (2) | 2021.09.27 |
---|---|
[BOJ] 백준_2798번_블랙잭_C/C++ (0) | 2021.09.24 |
[BOJ] 백준_1008번_A/B_C/C++ (0) | 2021.09.18 |
[BOJ] 백준_17427번_약수의 합 2_C/C++ (0) | 2021.09.17 |
[BOJ] 백준_1037번_약수 / C, C++ (0) | 2021.09.16 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!