📌 문제
💯 정답
import sys
stack_l = list(input())
stack_r = []
n = int(input())
for i in range(n):
order_list = sys.stdin.readline().split()
order = order_list[0]
if order == "L" and stack_l:
stack_r.append(stack_l.pop())
elif order == "D" and stack_r:
stack_l.append(stack_r.pop())
elif order == "B" and stack_l:
stack_l.pop()
elif order == "P":
stack_l.append(order_list[1])
print("".join(stack_l + list(reversed(stack_r))))
📝 설명
• 커서의 처음 위치가 오른쪽 끝이므로
입력받는 문자열을 왼쪽 스택에 리스트로 만들고 오른쪽 스택에 빈리스트를 만든다.
즉, 이제 커서를 기준으로 왼쪽은 stack_l 이고 오른쪽은 stack_r 에 값을 넣는다.
• L이고 왼쪽에 값이 있으면 왼쪽 값을 pop해 오른쪽에 넣음으로써 커서의 왼쪽 이동을 표현한다.
• D일때와 B일때도 이와 같이 표현한다.
• P일때는 P옆에 입력받은 값을 가져다 왼쪽 스택에 추가한다.
🙏 참고
👉 [백준] 에디터 1406번 파이썬 Python 자료구조