#include<bits/stdc++.h>
using namespace std;
int main(void){
list<char> l;
list<char>::iterator it;
string s;
char arg;
int N;
cin >> s;
for(auto i:s){
l.push_back(i);
}
it=l.end();
cin >> N;
for(int i=0;i<N;i++){
cin >> s;
if(s=="L"){
if(it!=l.begin())it--;
}else if(s=="D"){
if(it!=l.end())it++;
}else if(s=="B"){
if(it!=l.begin()){
it--;
it=l.erase(it);
}
}else if(s=="P"){
cin >> arg;
l.insert(it,arg);
}
}
for(auto c:l)cout << c;
}
STL list 자료구조를 이용하는 문제였다.
L → iterator 을 왼쪽으로 이동.
D → iterator 을 오른쪽으로 이동.
B → iterator 을 감소시켜서 왼쪽 문자로 이동한 다음
그 문자를 erase 함. 그럼 리턴값으로 그 다음값의 iterator 을 반환받을 수 있는데
그걸 iterator 변수에 넣으면 됨
P → 문자 하나를 추가로 입력받아서 앞에 원소 추가. iterator 은 바뀌지 않으니까 따로 증감 필요없음