
아래 백준 로고를 클릭하면 해당 문제로 이동합니다 😀
구현은 생각보다 간단하다.
하지만 시간복잡도를 최대한 줄여야 하는 문제라 줄일 부분을 최소한으로 만드는게 머리아픈 부분이었다.
입력받은 p에서 'R'이 있으면 주어진 배열을 reverse, 'D'가 있으면 첫번째 수를 버리는 것이다.
이떄 'R'을 입력 받을 때 마다 reverse를 해주면 당연히 ~ 시간초과가 뜬다 ..
그래서 생각해 낸건 'R'을 입력 받을 때 마다 flag += 1을 해주고
마지막에 출력 전에만 reverse를 진행해줬다.
이전에 'R' 입력이 있었으면 pop()으로 맨뒤에 숫자를 빼주고,
'R' 입력이 없었다면 popleft()로 첫번째 수를 버려준다.
마지막에 출력할 때는 flag % 2 == 0 조건을 걸어서 reverse 유무를 판단하고 출력해주면 됩니당 ~
from collections import deque
import sys
T = int(input())
for _ in range(T):
p = sys.stdin.readline().rstrip()
n = int(input())
xn = deque(sys.stdin.readline().rstrip()[1:-1].split(","))
if n == 0 :
xn = []
flag = 0
for i in p:
if i == 'R':
flag += 1
elif i == 'D':
if len(xn) == 0 :
print("error")
break
else:
if flag % 2 == 0:
xn.popleft()
else:
xn.pop()
else:
if flag % 2 == 1:
xn.reverse()
print("[" + ",".join(xn) + "]")
