문제
https://www.acmicpc.net/problem/5430
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)
'Koala - 10기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 2346 풍선 터뜨리기 (0) | 2023.05.07 |
---|---|
[백준/Python] 1417번: 국회의원 선거 (0) | 2023.05.07 |
[백준/1417] python 국회의원 선거 (0) | 2023.05.07 |
[백준/java] 5430 AC (0) | 2023.05.07 |
[백준/Python] 15903 카드 합체 놀이 (0) | 2023.05.06 |