728x90
https://www.acmicpc.net/problem/9081
주의! 이 문제에는 낚시가 있다! 출력란에 써진 글을 보자.
각 테스트 케이스에 대해서 주어진 단어 바로 다음에 나타나는 단어를 한 줄에 하나씩 출력하시오. 만일 주어진 단어가 마지막 단어이라면 그냥 주어진 단어를 출력한다.
여기서 말하는 마지막 단어는 입력의 마지막이 아니라 사전순으로 마지막인 단어를 의미한다!
C++의 경우 next_permutation()을 할 때 현재 순열이 사전순으로 마지막이라면 false를 반환한다.
next_permutation의 결과가 false이면 prev_permutation으로 다시 되돌린 후 출력하면 된다.
전체 코드
더보기
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
int t;
void solve()
{
cin >> t;
while (t--)
{
string s;
cin >> s;
if (!next_permutation(s.begin(), s.end())) prev_permutation(s.begin(), s.end());
cout << s << '\n';
}
}
int main()
{
cin.tie(nullptr);
ios::sync_with_stdio(false);
solve();
}
728x90
'백준 > 문자열' 카테고리의 다른 글
백준 1498 - 주기문 (0) | 2022.07.22 |
---|---|
[ICPC] 백준 14959 - Slot Machines (0) | 2022.07.20 |
[ICPC] 백준 10266 - 시계 사진들 (0) | 2022.07.15 |