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
반응형

+ Recent posts