https://www.acmicpc.net/problem/1406
앞 뒤로 삽입 삭제가 가능한 deque를 사용했습니다
deque두 개를 두고, 두 개 사이에 커서가 있다고 생각함
#include <iostream>
#include <string>
#include <deque>
#include <algorithm>
using namespace std;
int main() {
string str;
cin >> str;
deque<char> q1,q2;
for (int i = 0; i < str.length(); i++) {
q1.push_back(str[i]);
}
int num;
cin >> num;
for (int i = 0; i < num; i++) {
char testCh;
cin >> testCh;
if (testCh == 'P') {
char x;
cin >> x;
q1.push_back(x);
}
else if (testCh == 'L') {
if (!q1.empty()) {
q2.push_front(q1.back());
q1.pop_back();
}
}
else if (testCh == 'B') {
if (!q1.empty()) {
q1.pop_back();
}
}
else { //D
if (!q2.empty()) {
q1.push_back(q2.front());
q2.pop_front();
}
}
}
while (!q1.empty()) {
cout << q1.front();
q1.pop_front();
}
while (!q2.empty()) {
cout << q2.front();
q2.pop_front();
}
}