c++ list 라이브러리를 사용하면 편하게 풀 수 있다.
그리고 iterator란 개념이 나왔는데 이는 그냥 위치를 가르키는 포인터라고 생각하면 된다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include<list>
using namespace std;
int main() {
int n;
list<char> nlist;
list<char>::iterator cursor;
char c;
string init, cmd;
cin >> init >> n;
for (int i = 0; i < init.size(); i++) {
nlist.push_back(init[i]);
}
cursor = nlist.end();
for (int i = 0; i < n; i++) {
cin >> cmd;
if (cmd == "L" && cursor != nlist.begin()) {
cursor--;
}
else if(cmd == "D"&& cursor != nlist.end()) {
cursor++;
}
else if(cmd == "B" && cursor != nlist.begin()) {
cursor--;
cursor = nlist.erase(cursor);
}
else if(cmd == "P") {
cin >> c;
nlist.insert(cursor, c);
}
}
for (char c : nlist) // for (element_type element : container) 앞은 컨테이너 요소 타입, 뒤는 순회할 컨테이너
cout << c;
return 0;
}