백준 5430 AC

김민영·2023년 1월 12일
0

알고리즘

목록 보기
54/125

과정

  • deque에서 popleft, pop을 사용하기
  • R의 개수를 센다.
  • D가 들어오면 R % 2가 0이면 popleft를, 1이면 pop을 시행한다.
    • deque 길이가 0이면 error를 출력한다.
  • 출력시 R % 2가 0이면 그냥 출력, 1이면 거꾸로 출력한다.

반례

  • deque가 비어있을 때 처리를 구분해야한다.

    • D 연산 시, 비어있으면 error 출력
    • 계산 마지막에서 비어있으면 [] 출력
  • deque 길이가 0일 때 무조건 [] 출력하게 하면 error와 구분 못 함.

  • 마지막에서 출력할 때 deque 길이가 있는 것만 출력하게 하면 정상적으로 [] 를 출력하는 경우 틀림.

    2
    RDD
    1
    [1]
    D
    1
    [1]

    error
    []

from collections import deque

tc = int(input())
for _ in range(tc):
    p = input()
    n = int(input())

    inp = input()[1:-1]
    if n == 0:
        deq = deque([])
    else:
        deq = deque(map(int, inp.split(",")))

    a = 0
    tmp = 0
    for i in p:
        if i == "R":
            tmp += 1
        else:  # D input
            if len(deq) == 0:
                print("error")
                a = 1
                break
            if tmp % 2 == 0:
                deq.popleft()
            else:
                deq.pop()

    if deq:
        if tmp % 2 == 1:
            deq.reverse()
        print("[", end="")
        for i in range(0, len(deq) - 1):
            print(deq[i], end=",")
        print(deq[-1], end="]")
        print()
    elif a == 0:
        print("[]")

profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글