문제
접근 방법
'<' '>' 를 통해서 이동하며 해당 위치의 값을 지우고 삽입하는 과정을 진행 -> list로 선언
iterator을 활용하여 조건문을 통해 판별, 지우는 경우에는 it의 값을 갱신해야 함, it = S.erase(it)
이 과정을 거치면 결과적으로 문제 해결 가능.
코드
#include <iostream>
#include <list>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int T;
cin >> T;
while (T--) {
string L;
cin >> L;
list<char> S;
list<char>::iterator it = S.begin();
for (char c : L) {
if (c == '<') {
if (it != S.begin()) it--;
} else if (c == '>') {
if (it != S.end()) it++;
} else if (c == '-') {
if (it != S.begin()) {
it--;
it = S.erase(it);
}
} else {
S.insert(it, c);
}
}
for (char c : S) cout << c;
cout << '\n';
}
return 0;
}
링크
'Algorithm(C++)' 카테고리의 다른 글
[BOJ - 5430] AC(C++) (0) | 2025.02.10 |
---|---|
[BOJ - 11478] 서로 다른 부분 문자열의 개수(C++) (0) | 2025.02.08 |