
단순한 조건문으로 풀었다. 더 깔끔한 방법이 있을 듯하다.
1. '<'를 만나면, `isTag`를 true로 하고 이전 버퍼의 내용을 뒤집어 `result`에 붙인다. '<'도 같이 붙여준다.
2. '>'를 만나면 `isTag`를 false로 하고 '>'를 `result`에 붙인다.
3. 만약 isTag가 true라면 현재 문자를 result에 붙인다.
4. 만약 isTag가 false이고 현재 문자가 공백이라면 buf에 있는 내용을 뒤집어 `result`에 붙이고 공백도 같이 붙여준다. 이때, 버퍼를 비운다.
5. isTag가 false인 경우고 공백이 아니라면 buf에 현재 문자를 붙인다.
만약 buf에 남아있는 문자가 있는데 for문이 끝나는 경우가 있을 수 있으니, 마지막에는 buf에 있는 내용을 뒤집어 `result`에 붙인다.
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
bool isTag = false;
string input;
string buf = "";
string result = "";
getline(cin, input);
for (int i = 0; i < input.size(); i++) {
if (input[i] == '<') {
reverse(buf.begin(), buf.end());
result += buf;
buf = "";
isTag = true;
result += input[i];
continue;
} else if (isTag && input[i] == '>') {
isTag = false;
result += input[i];
continue;
}
if (isTag) {
result += input[i];
} else {
if (input[i] == ' ') {
reverse(buf.begin(), buf.end());
result += buf + ' ';
buf = "";
continue;
}
buf += input[i];
}
}
reverse(buf.begin(), buf.end());
result += buf;
cout << result << endl;
}'Algorithm > BOJ' 카테고리의 다른 글
| [백준] 1021번 Silver3 회전하는 큐, C++ 코드 (0) | 2025.12.10 |
|---|---|
| [백준] 1969번 Silver 4 DNA, C++ 코드 (0) | 2025.12.10 |
| [백준] 1629번 Silver 1 곱셈, Java 코드 (0) | 2024.10.06 |
| [백준] 1149번 - Silver 1 RGB거리, 파이썬 코드 (0) | 2024.09.30 |
| [백준] 16953번 - Silver 2 A -> B, 파이썬 코드 (0) | 2024.09.28 |