[Python] 백준 5430번: AC

Jonie Kwon·2022년 4월 23일
0

https://www.acmicpc.net/problem/5430

풀이

  1. 무조건 R나올때마다 reverse : 당연히 시간초과
  2. replace로 RR을 바꿔서 R일때만 reverse : 시간초과
  3. RD가 나오면 deque.pop(), DD가 나오면 deque.popleft() 두번 : 틀렸습니다
  4. direction을 이용해서 R이 나올때마다 True, False로 바꿔주고 현재 방향에 따라 deque.pop() 또는 deque.popleft() : 틀렸습니다 (맞왜틀)
  5. 알고보니 입력에서 nums가 비어있으면 바로 except문으로 넘어가서 틀린거였다. nums가 빈문자열이면 빈 리스트를 만들어 출력하도록 해서 넘어갔다.
    입출력때문에 자꾸 삽질한다. 입출력을 잘 확인합시다 ㅠㅠ

도움이 된 반례

https://www.acmicpc.net/board/view/87040 감사합니다

1
R
0
[]
----
출력 error
정답 []

코드

import sys
from collections import deque
input = sys.stdin.readline
t = int(input())
for _ in range(t):
    p = input().strip()
    n = int(input())
    direction = True
    try:
        nums = input().lstrip("[").rstrip("]\n")
        if nums == "":
            nums = []
        else:
            nums = deque(list(map(int, nums.split(","))))
        for x in p:
            if x=="R":
                direction = not direction
            elif x=="D":
                if direction:
                    nums.popleft()
                else:
                    nums.pop()
        if not direction:
            nums = list(nums)[::-1]
        print("[", end="")
        print(",".join(map(str,nums)), end="")
        print("]")
    except:
        print("error")
profile
메모하는 습관

0개의 댓글