[Python] 백준 / gold / 5430번 (AC)

김상우·2021년 10월 7일
0
post-custom-banner

문제 링크 : https://www.acmicpc.net/problem/5430

로직 자체는 어렵지 않았는데, 입출력 조건이 너무 까다로웠다..
이 문제에서는 다음 2가지를 챙겨가면 될 것 같다.

  1. deque의 myList.reverse()는 O(N) time이 소요된다.
  2. split(',') 할 때, ','이 아예 없는 경우를 주의하자.

정답 코드

import sys
from collections import deque
T = int(sys.stdin.readline())
for _ in range(T):
    p = sys.stdin.readline().strip()
    n = int(sys.stdin.readline())
    s = sys.stdin.readline().strip()

    if s == '[]':
        num = deque([])
    else:
        num = s[1:-1].split(',')
        num = deque(num)

    error = False
    reverse = 0

    for x in p:
        if x == 'R':
            reverse = (reverse+1) % 2
        elif x == 'D':
            if not num:
                error = True
                break
            else:
                if reverse == 0:
                    num.popleft()
                elif reverse == 1:
                    num.pop()

    if error:
        print('error')
    else:
        if reverse == 1:
            print('[', end='')
            num.reverse()
            for x in range(len(num)):
                if x == len(num)-1:
                    print(num[x], end='')
                else: print(num[x], end=',')
            print(']')

        else:
            print('[', end='')
            for x in range(len(num)):
                if x == len(num) - 1:
                    print(num[x], end='')
                else:
                    print(num[x], end=',')
            print(']')
profile
안녕하세요, iOS 와 알고리즘에 대한 글을 씁니다.
post-custom-banner

0개의 댓글