BOJ - 1406번_에디터 (C++)
BOJ - 1406번_에디터
초기에 편집기에 입력되어 있는 문자열이 주어지고, 그 이후 입력한 명령어가 차례로 주어졌을 때, 모든 명령어를 수행하고 난 후 편집기에 입력되어 있는 문자열을 구하는 프로그램 작성하기
이 편집기가 지원하는 명령어는 다음과 같다.
풀이
C++ STL list를 이용한다.
소스코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string s;
cin >> s;
list<char> ls;
for(auto c : s) {
ls.push_back(c);
}
auto cur = ls.end();
int m;
cin >> m;
for(int i=0; i<m; i++) {
char op;
cin >> op;
if(op=='P') {
char add;
cin >> add;
ls.insert(cur, add);
}
else if(op=='L') {
if(cur!=ls.begin()) {
cur--;
}
}
else if(op=='D') {
if(cur!=ls.end()) {
cur++;
}
}
else if(op=='B') {
if(cur!=ls.begin()) {
cur--;
cur = ls.erase(cur);
}
}
}
for(auto c : ls) {
cout << c;
}
}