오답노트

[순열] BOJ 10972 다음 순열 - 오답노트 본문

C,C++/코딩테스트

[순열] BOJ 10972 다음 순열 - 오답노트

권멋져 2022. 5. 7. 19:10
https://www.acmicpc.net/problem/10972
 

10972번: 다음 순열

첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다.

www.acmicpc.net

 

- 문제 파악

주어진 순열의 다음 순열을 출력한다. 다음 순열이 없을 경우 -1 을 출력한다.

 

- 나의 접근

재귀로 주어진 순열을 찾고 그 다음 순열을 찾도록 했으나, 채점률이 아예 오르지도 못한채 문제를 계속틀렸다.

 

-정답

STL 함수중에 순열에 관련된 함수가 있었다. (진짜 왕짜증.. 이러면서 배우는거지..)

https://dhjkl123.tistory.com/46

 

STL 순열 관련 함수 ( next_permutation, prev_permutation, rotate)

- next_permutation 오름차순 정렬된 컨테이너를 받는다 입력 컨테이너의 다음 순열을 입력 컨테이너에 입력한다. 다음 순열이 존재하면 true, 존재하지 않으면 false #include // std::cout #include // std::nex..

dhjkl123.tistory.com

 

#include <bits/stdc++.h>
using namespace std;
int n;
int main(){
    cin >> n;
    vector <int> v(n);
    for(auto &n : v) cin >> n;
    if(!next_permutation(v.begin(),v.end())) cout << -1 << '\n';
    else for(auto &n : v) cout << n << ' ';
}