출처: 백준 5430번 AC
문제 풀이의 핵심은 뒤집는 함수를 직접 수행하기 보다는 간접적으로 결과를 뽑는데 있다.
먼저, deque
를 통해 숫자를 저장한다. 그리고, R
이 몇 번 실행되어야하는지 기록하는 변수를 통해 앞에서 숫자를 뺄지 뒤에서 뺄지를 정해주면 된다.
import sys
from collections import deque
input = sys.stdin.readline
T = int(input())
for _ in range(T):
p = input().rstrip()
n = int(input())
if n == 0:
input()
numbers = deque()
else:
numbers = deque(input().rstrip()[1:-1].split(","))
count_R = 0
check = 0
for i in p:
if i == 'R':
count_R += 1
else:
if i == 'D' and count_R % 2 == 0:
if numbers:
numbers.popleft()
else:
check = 1
break
else:
if numbers:
numbers.pop()
else:
check = 1
break
if check == 1:
print("error")
else:
if count_R % 2 == 1:
numbers.reverse()
print("["+",".join(numbers)+"]")