이문제를 보자마자 스택을 이용하면 될것 같다는 느낌이 들었다. 만약 옵션이 L이면 문자 끝에것을 stack배열에 append를 해준다. 만약 문자가 없다면은 커서가 왼쪽 끝까지 왔단 뜻이므로 스킵한다.
옵션이 D이면 stack에 마지막것을 pop하여 text에 붙여준다. 애초에 stack에 쌓을때 문자열의 오른쪽부터 왼쪽 순으로 쌓이기때문에 pop을해주면 가장 최근의 문자열에서 pop된것을 뽑아온다.
옵션이 B이면 삭제이므로 pop을 해준다.
옵션이 P이면 특정문자를 append해준다.
import sys
input = sys.stdin.readline
text = list(map(str, input().strip()))
stack = []
n = int(input())
for i in range(n):
m = list(map(str, input().split()))
if m[0] == 'L':
if text:
stack.append(text.pop())
elif m[0] == 'D':
if stack:
text.append(stack.pop())
elif m[0] == 'B':
if text:
text.pop()
elif m[0] == 'P':
text.append(m[1])
text.extend(reversed(stack))
for i in text:
print(i, end='')
잘봤습니다. 좋은 글 감사합니다.