future0610 2023. 5. 7. 21:57

문제

 

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

 

5430번: AC

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

www.acmicpc.net


Algorithm

"R"의 개수에 따라 "D"를 입력받았을 떄 배열에서 pop할 위치가 달라진다. "R"을 홀수 번 입력받으면 배열의 마지막 위치에서, 짝수 번(0번 포함) 입력받으면 배열의 첫번째 위치에서 pop시킨다. 그리고 최종적으로 "R"을 홀수 번 입력받았을 경우에는 배열을 reverse 명령어로 순서를 반대로 해서 출력하고 짝수 번(0번 포함) 입력받았을 경우에는 그대로 출력한다. 만약 "D" 입력을 너무 많이 받아 배열의 길이가 0일 경우에는 error를 출력한다.

 


 

 

Code

import sys
from collections import deque

input = sys.stdin.readline

T = int(input())
ans = []

for _ in range(T):
    OP = deque(list(input()[: -1]))
    L = int(input())
    array = deque(" ".join(input()[1 : -2].split(",")).split())
    Q = deque([])
    reverse = 0
    error = False
    while len(OP) > 0:
        op = OP.popleft()
        if op == "D":
            if len(array) != 0:
                if reverse == 0:
                    array.popleft()
                else:
                    array.pop()
            else:
                error = True
                break
        elif op == "R":
            reverse = (reverse + 1) % 2
    if not error:
        if reverse:
            array.reverse()
        ans.append("[" + ",".join(array) + "]")
    else:
        ans.append("error")
for i in list(ans):
    print(i)