BOJ - 1406번_에디터

초기에 편집기에 입력되어 있는 문자열이 주어지고, 그 이후 입력한 명령어가 차례로 주어졌을 때, 모든 명령어를 수행하고 난 후 편집기에 입력되어 있는 문자열을 구하는 프로그램 작성하기

이 편집기가 지원하는 명령어는 다음과 같다.

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;
	}
}