728x90
https://www.acmicpc.net/problem/5430
deque에 대해서 알아볼 수 있는 문제다.
처음에는 R을 받을 때마다 q.reverse()를 통해 역순정렬을 해서 시간초과가 나왔다.
cnt 변수를 하나 만들어서 R을 받을 때마다 1씩 증가시키며 마지막에 한 번만 reverse를 해주면 되는 문제였다.
이게 핵심이었던 것 같고, 공부하면서 reverse(), rotate(), 리스트와 덱의 차이점 등을 알 수 있어서 좋은 문제라 생각한다.
끗
from collections import deque
def a(command, l, q):
# cnt가 홀수면 자리바꿈
cnt = 0
for i in command:
if i=='R':
cnt+=1
elif i=='D':
if len(q)==0:
return "error"
elif cnt%2==0:
q.popleft()
elif cnt%2==1:
q.pop()
if cnt%2==0:
return '[' + ','.join(q) + ']'
else:
q.reverse()
return '[' + ','.join(q) + ']'
n=int(input())
for _ in range(n):
command = input()
l = int(input())
q = deque(input().rstrip()[1:-1].split(","))
if q[0]=='':
q = deque([])
print(a(command, l, q))
728x90