개발조아

[BOJ/백준] 백준 5430 AC 파이썬 본문

알고리즘/백준

[BOJ/백준] 백준 5430 AC 파이썬

개발조아 2021. 8. 10. 14:48
728x90

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

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

 

Deque를 사용하면 간단하게 풀수 있다.

 

시작할때 popleft로 앞에서부터 빼다가 R이 오면 pop로 바꾸고 또 R이 오면 popleft로 바꾸면 된다.

모든 명령 수행 후 남은 숫자는 현재 방향에 따라 모든 숫자를 리스트에 담고 join으로 , 추가하면 된다.

 

주의할 점이라면 split해서 값이 없다면 ''문자가 들어가기 때문에 체크해줘야한다.

from sys import stdin
from collections import deque

input = stdin.readline

tc = int(input())

def solv():
    ps = input().strip()
    n = int(input())
    arr = input().strip('[]\n').split(',')
    print(simul(arr,ps))

def simul(arr,ps):
    dq = deque(arr)
    dir = 0

    for p in ps:
        if p == 'R':
            dir = (dir + 1) % 2
        else:
            if not dq or not dq[-1]:
                return 'error'
            if dir == 0:
                dq.popleft()
            else:
                dq.pop()

    ans = []
    while dq:
        if dir == 0:
            ans.append(dq.popleft())
        else:
            ans.append(dq.pop())
    ans = ','.join(ans)
    return f'[{ans}]'
for _ in range(tc):
    solv()
Comments