[1406]에디터

less than 1 minute read

풀이

커서의 왼쪽에 해당하는 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;
}

Tags:

Categories:

Updated: