※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 10973번 문제인 이전 순열이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/10973
10973번: 이전 순열
첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다.
www.acmicpc.net
algorithm 헤더의 prev_permutation을 이용하여 이전 순열을 간단히 구할 수 있다.
주어진 순열이 첫번째 순열이 아님을 확인하는 것을 잊지 말자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
vector<int> arr(N);
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
bool chk = 1;
for (int i = 0; i < N; i++) {
if (arr[i] != i + 1) chk = 0;
}
if (chk) cout << -1;
else {
prev_permutation(arr.begin(), arr.end());
for (auto x : arr) cout << x << ' ';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 1072 // C++] 게임 (0) | 2021.07.30 |
---|---|
[BOJ 10972 // C++] 다음 순열 (0) | 2021.07.29 |
[BOJ 10164 // C++] 격자상의 경로 (0) | 2021.07.27 |
[BOJ 10651 // C++] Cow Jog (0) | 2021.07.26 |
[BOJ 14003 // C++] 가장 긴 증가하는 부분 수열 5 (0) | 2021.07.25 |