728x90
반응형
덱 문제이다. 생각보다 쉽지 않은 문제였다. 런타임 에러에 주의해줘야 하고 시간도 빡빡하기 때문이다.
핵심은 R이 들어올 때마다 reverse 하면 안 된다는 점이다. 이것 때문에 계속 시간 초과가 나왔었다.
R이 홀수개만큼 들어온 상황 -> D 들어올 시 pop
R이 짝수개만큼 들어온 상황 -> D 들어올 시 popleft
마지막에 R이 홀수개라면 reverse 하고 출력, 짝수 개면 그냥 출력해주면 된다.
from collections import deque
import sys
for _ in range(int(sys.stdin.readline().rstrip())):
p = sys.stdin.readline().rstrip()
n = int(sys.stdin.readline().rstrip())
t = sys.stdin.readline().rstrip()[1:-1]
if not t:
queue = deque()
else:
queue = deque(map(int, t.split(',')))
ok = 1
is_rev = False
for c in p:
if c == 'R':
is_rev = not is_rev
elif queue and c == 'D':
if is_rev:
queue.pop()
else:
queue.popleft()
else:
ok = 0
break
if is_rev:
queue.reverse()
if ok:
print('[', end='')
print(*queue, sep=',', end='')
print(']')
else:
print("error")
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1188번 음식 평론가(python) (0) | 2021.03.07 |
---|---|
백준 알고리즘 1300번 K번째 수(python) (0) | 2021.03.07 |
백준 알고리즘 17298번 오큰수(python) (0) | 2021.03.07 |
백준 알고리즘 20001번 고무오리 디버깅(python) (0) | 2021.03.06 |
백준 알고리즘 17952번 과제는 끝나지 않아!(python) (0) | 2021.03.06 |