PS

[백준] 5430번 : AC(덱)- 파이썬[Python]

choisanghyun 2022. 1. 10. 19:59
728x90

문제

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

풀이

import sys
from collections import deque

t=int(sys.stdin.readline())
for _ in range(t):
  p=sys.stdin.readline()
  n=int(sys.stdin.readline())
  que = deque(sys.stdin.readline().rstrip()[1:-1].split(','))
  r_check=0 #R 홀수 짝수 측정

  try:
    for i in p:
      if i=='R':
        r_check+=1
      elif i=='D' and n==0:
        que.popleft(3)
        break
      elif i=='D':
        if r_check%2==0:
          que.popleft()
        elif r_check%2!=0:
          que.pop()
    if r_check%2==0:
      pass
    elif r_check%2!=0:
      que.reverse()

    print("[" + ",".join(que) + "]")
  except:
    print("error")

이 문제는 덱이 좌/우측에서 데이터를 pop할 수 있는 기능을 이용해서 R의 개수에 따라 pop의 방향을 정하고

총 R의 수가 홀수인지 짝수인지에 따라서 마지막에 reverse를 돌리는지 판단을 하도록 하면 시간복잡도를 대폭 줄일 수 있다.