문제
https://www.acmicpc.net/problem/5397
풀이
커서를 기준으로 왼쪽, 오른쪽을 나누어 저장하기 위해 deque를 생성한다.
(왼쪽 deque | 오른쪽 deque)
입력받은 문자열을 for문으로 하나씩 확인한다.
- 왼쪽 deque이 비어있지 않고, '-'라면 왼쪽 deque를 pop 한다.
- 왼쪽 deque이 비어있지 않고, '<'라면 왼쪽 deque에서 pop 한 값을 오른쪽 deque에 appendleft 한다.
- 오른쪽 deque이 비어있지 않고, '>'라면 오른쪽 deque에서 popleft 한 값을 왼쪽 deque에 append 한다.
- 위의 조건에 해당하지 않으면 화살표나 '-'를 입력받아도
문자가 없어 커서가 움직이지 않거나 지울 것이 없기 때문에 무시하고,
그 외의 입력값들은 모두 비밀번호의 일부이므로 왼쪽 deque에 append 한다.
왼쪽 deque와 오른쪽 deque를 합쳐서 출력한다.
코드
from collections import deque
import sys
input = sys.stdin.readline
n = int(input())
for _ in range(n):
s = input().rstrip()
l = deque([])
r = deque([])
for i in s:
if l and i == '-':
l.pop()
elif l and i == '<':
r.appendleft(l.pop())
elif r and i == '>':
l.append(r.popleft())
elif i != '<' and i != '>' and i != '-':
l.append(i)
print(''.join(l + r))
'Koala - 12기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 1874번 : 스택 수열 (0) | 2023.10.29 |
---|---|
[PG|PYTHON] 다리를 지나는 트럭 (0) | 2023.10.29 |
[백준/C++] 11286번: 절댓값 힙 (0) | 2023.10.29 |
[백준/C++] 1614번 영식이의 손가락 (0) | 2023.10.28 |
[백준/python] 1715번: 카드 정렬하기 (0) | 2023.10.25 |