[백준/BOJ][Python] 5430번 AC

Eunding·2024년 11월 16일
0

algorithm

목록 보기
38/107

5430번 AC

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


아이디어

deque을 쓴 이유는 R이 있으면 뒤집어야하는데 flag 변수로 앞뒤만 구분해놓고 pop으로 뒤에 있는 걸 빼거나 popleft로 앞에 있는 걸 빼기 위해서이다.

틀렸던 이유
반례)
1
D
0
[]
answer = error 인데 자꾸 결과가 []이 나와서

 if len(l) == 0 or l[0] == '':

이 부분을 추가해주었다.


코드

from collections import deque

def check(p, l):
    l = deque(l)
    flag = True #앞 False면 뒤

    for order in p:
        if order == 'R':
            flag = not flag
        else: # D
            if len(l) == 0 or l[0] == '':
                return 'error'
            if flag:
                l.popleft()
            else:
                l.pop()

    l = list(l)
    s = '['
    if not flag:
        l.reverse()
    for i in l:
        s += i
        s += ','
    if s[-1] == ',':
        s = s[:-1]+']'
    else: # []
        s += ']'
    return s


T = int(input())

for _ in range(T):
    p = list(input()) # 명령
    n = int(input()) # 리스트 길이
    l = input()
    l = l[1:-1].split(',')

    print(check(p, l))

1개의 댓글

comment-user-thumbnail
2024년 11월 16일

도움이 됩니다!!

답글 달기