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

    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를 돌리는지 판단을 하도록 하면 시간복잡도를 대폭 줄일 수 있다.

    댓글