컴굥일지
[BOJ/백준 2993][C++] 세 부분 본문
반응형
백준 2993 세부분
문제 링크
https://www.acmicpc.net/problem/2993
문제 내용
입력받은 문자열을 세 부분으로 나누어 뒤집고, 나누기 전과 같은 순서로 합친다. 이때 사전 순으로 가장 앞서는 단어를 출력한다.
문제 풀이
for문을 2번 돌려서 문자열을 3개의 토막으로 나눈다. 그리고 각각을 뒤집고, 이전과 비교하여 더 앞서는 단어를 ans에 저장한다.
코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
string str; cin >> str; //입력에는 공백 없이 한 줄만 주어짐
int len = str.size();
string ans = str;
for (int i = 0; i < len - 2; i++) {
for (int j = i+1; j < len - 1; j++) {
string tmp = str;
reverse(tmp.begin(), tmp.begin() + i + 1); //토막1
reverse(tmp.begin() + i + 1, tmp.begin() + j + 1); //토막2
reverse(tmp.begin() + j + 1, tmp.end()); //토막3
ans = min(tmp, ans); //최솟값 갱신
}
}
cout << ans << '\n';
return 0;
}
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 2346][C++] 풍선 터뜨리기 (0) | 2021.07.11 |
---|---|
[BOJ/백준 9093][C++] 단어 뒤집기 (0) | 2021.07.11 |
[BOJ/백준 1008][C++] A/B (0) | 2021.07.11 |
[BOJ/백준 1547][C++] 공 (0) | 2021.07.11 |
[BOJ/백준 1158][C++] 요세푸스 문제 (0) | 2021.07.11 |
Comments