#include<bits/stdc++.h>
using namespace std;
int main(void){
list<char> L;
list<char>::iterator cur;
int T;
string s;
cin >> T;
while(T--){
cur=L.begin();
cin >> s;
for(auto 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';
L.clear();
}
}
마찬가지로 STL list 연습문제.
< : 시작부분이 아니면 왼쪽으로 커서이동.
> : 마지막부분이 아니면 오른쪽으로 커서이동.
number, alphabet : cur 이 가리키는 곳 이전의 위치에 문자를 삽입한다.
- : insert 메소드는 항상 cur 이전에 문자를 삽입하므로,
erase 메소드를 사용할 때, cur 을 감소시킨 다음 지워야한다.
이 때 cur 이 시작부분을 가리키고 있을 경우, cur 을 감소시키면 런타임에러가 나니까
제외시켜준다.