- 문제 링크 : boj.kr/1464
- 난이도 : G4
- 태그 : 그리디
코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define INF 0x7FFFFFFF
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
string s;
cin >> s;
string ans = "";
ans = ans + s[0];
for(int i = 1; i < s.size(); i++) {
if(ans[0] >= s[i]) {
ans = s[i] + ans;
}
else {
ans = ans + s[i];
}
}
cout << ans;
return 0;
}
풀이
처음부터 i만큼 뒤집을 수 있다는 것은 i번째 문자를 그 전까지의 문자열의 앞이나 뒤에 붙일 수 있다는 것을 의미한다.
i번째 문자를 앞에 붙여서 사전순으로 이득을 본다면 앞에, 아니라면 맨 뒤에 붙이면 된다.
728x90
'PS' 카테고리의 다른 글
BOJ 20772 : Scheduler (2) | 2024.07.22 |
---|---|
BOJ 14798 : Alphabet Cake (Large) (1) | 2024.07.21 |
BOJ 1655 : 가운데를 말해요 (0) | 2024.07.19 |
BOJ 3126 : 반역의 원철이 (0) | 2024.07.18 |
BOJ 32027 : 미어캣 (0) | 2024.07.17 |