문제
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)
'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 |