문제 링크 : https://www.acmicpc.net/problem/5397
풀이
C++의 STL List 라이브러리를 사용하여 풀이하였다. 연결 리스트로 풀면 실버2 문제치곤 어렵지 않게 해결할 수 있다.
#include <iostream>
#include <list>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
while(n--){
list<char> L;
auto cur = L.begin(); // 제일 왼쪽으로 cur 두기
string s;
cin >> s;
for(char c : s){
if(c == '<'){
if(cur != L.begin()) cur--; // 제일 왼쪽이면 해당 명령 무시
} else if (c == '>')
{
if(cur != L.end()) cur++; // 제일 오른쪽이면 해당 명령 무시
} else if (c == '-')
{
if(cur != L.begin()){ // 제일 왼쪽이면 해당 명령 무시
cur--; // 커서 위치의 왼쪽 글자를 삭제하기 위해 이동
L.erase(cur++); // 삭제 후 원위치로
}
} else{
L.insert(cur, c);
}
}
for(auto c : L) cout << c;
cout << "\n";
}
}
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
(C++) 백준 2493번 - 탑 (0) | 2023.03.17 |
---|---|
(C++) 백준 1406번 - 에디터 (0) | 2023.03.16 |
(Python) 백준 1966번 - 프린터 큐 (0) | 2023.01.13 |
(Python) 백준 1929번 - 소수 구하기 (0) | 2023.01.11 |
(Python) 백준 1874번 - 스택 수열 (0) | 2023.01.10 |