[1406]에디터
풀이
커서의 왼쪽에 해당하는 Stack을 하나 만들고, 오른쪽에 해당하는 stack을 하나 만든다. 연산을 수행할 때마다 이들을 사용해서 구현한다.
코드
#include <cstdio>
#include <iostream>
#include <string>
#include <stack>
using namespace std;
stack<char> l;
stack<char> r;
stack<char> t;
string s;
int n;
char a, b;
int main(void) {
cin >> s;
for (int i = 0; i < s.length(); i++) {
l.push(s[i]);
}
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a;
if (a == 'L' && !l.empty()) {
r.push(l.top());
l.pop();
}
else if (a == 'D' && !r.empty()) {
l.push(r.top());
r.pop();
}
else if (a == 'B' && !l.empty()) {
l.pop();
}
else if (a == 'P') {
cin >> b;
l.push(b);
}
}
while (!l.empty()) {
t.push(l.top());
l.pop();
}
while (!t.empty()) {
cout << t.top();
t.pop();
}
while (!r.empty()) {
cout << r.top();
r.pop();
}
return 0;
}