문제 링크
https://www.acmicpc.net/problem/5430
잡담
골드 문제 치고는 살짝 쉬운 것 같다.
구현
연산에는 두 가지가 있다. R(뒤집기), D(버리기)이다. 첫 번째 수를 버린다고 하니, popleft를 생각해서 양 끝의 데이터를 pop할 수 있는 덱이 적합하다고 생각했다. 처음에는 단순하게 배열 자체를 reverse시켰는데, 시간초과가 나서 생각해보니 flag만 지정해서 flag에 따라 어디서 pop할 건지 정해주면 되는 문제였다.
코드
from sys import stdin
from collections import deque
input = lambda : stdin.readline().strip()
def main():
t = int(input())
for _ in range(t):
p = input()
n = int(input())
arr = deque(eval(input()))
try:
reverseFlag = False
for cmd in p:
if cmd == 'R':
reverseFlag = not reverseFlag
else:
if reverseFlag:
arr.pop()
else:
arr.popleft()
print('[', end='')
if not arr:
print(']')
else:
if reverseFlag:
Range = range(len(arr) - 1, 0, -1)
last = 0
else:
Range = range(len(arr) - 1)
last = -1
for i in Range:
print(arr[i], end=',')
print(f'{arr[last]}]')
except IndexError:
print('error')
if __name__ == '__main__':
main()