[백준 5430] AC

Junyoung Park·2022년 2월 26일
0

코딩테스트

목록 보기
88/631
post-thumbnail

1. 문제 설명

AC

2. 문제 분석

fliped를 확인하면서 왼쪽, 오른쪽에서 주어진 값을 팝한다. 원소가 없을 때 팝한다면 에러다.

  • 런타임 에러를 해결하는 데 시간이 더 걸렸다. 원인은 빈 배열을 받아들인 뒤 nums.split(',')를 하고 디큐로 만들기 때문. nums가 빈지 (또는 n이 0인지) 확인하자.

3. 나의 풀이

from collections import deque

t = int(input())

for _ in range(t):
    p = input()
    n = int(input())
    nums = input()[1:-1]

    if nums:
        queue = deque(list(map(int, nums.split(','))))
    else:
        queue = deque()
        # nums == []일 때에는 빈 디큐
    fliped = False
    error = False

    for cmd in p:
        if cmd == 'R':
            fliped = not fliped
            # 값이 있든 없든 flip 가능
        else:
            if not queue:
                error = True
                break
                # 값이 없을 때 꺼낸다면 error
            else:
                if fliped: queue.pop()
                else: queue.popleft()
                # 값이 있다면 fliped 여부에 맞춰서 pop한다.
    if error: print('error')
    else:
        if fliped: queue.reverse()

        print('[', end='')
        if queue: print(*queue, sep=',', end='')
        # 애스터리스크를 통해 queue 내용을 꺼내자. 구분자로 ','를 넣고 가로로 붙이기
        print(']')
profile
JUST DO IT

0개의 댓글