https://www.acmicpc.net/problem/5397
공부 날짜 : 2023.01.19
정답 참조 여부 : x
문자 입력과 커서 이동, 삭제 등의 명령에 의해서 만들어진 문자열을 출력할 수 있는지 묻는 문제이다.
덱 구조를 사용하니까 금방 풀렸다.
커서를 기준으로 왼쪽과 오른쪽으로 구분하고, 커서 이동시 왼쪽이나 오른쪽에서 pop해서 append해주었다. 마찬가지로 지우는 경우에는 왼쪽에 pop해주고 입력은 왼쪽에 append해주면 된다.
덱 구조를 어떻게 구현하는지 궁금하긴 하지만, 이 부분은 당분간 깊게 생각하지 않고 자료구조 까지는 주어지는 모듈을 사용해야겠다.
from collections import deque
import sys
input = sys.stdin.readline
##########################################
t = int(input())
for _ in range(t):
left_deque = deque()
right_deque = deque()
password_data = input().rstrip()
for char in password_data:
if char == "<":
if left_deque:
right_deque.appendleft(left_deque.pop())
else:
continue
elif char == ">":
if right_deque:
left_deque.append(right_deque.popleft())
else:
continue
elif char == "-":
if left_deque:
left_deque.pop()
else:
continue
else:
left_deque.append(char)
print("".join(left_deque) + "".join(right_deque))