배열을 deque를 이용해서 생성한 다음
명령어를 하나씩 수행하면서 R가 나오면 삭제할 위치를 조절해주면서 뒤집지않고도 뒤집은 효과를 낼 수 있게했다.
그리고 D가 나오면 현재 단계에서 삭제할 위치에서 값을 pop해서 삭제했다.
import sys
from collections import deque
t = int(sys.stdin.readline())
for _ in range(t):
cmd = sys.stdin.readline()
is_reverse = False#True면 왼쪽에서 삭제
is_break = False
n = int(sys.stdin.readline())
input_array = sys.stdin.readline()[1:-2]
array = deque(input_array.split(','))
for command in cmd:
if command == 'R':
if is_reverse:
is_reverse = False
continue
else:
is_reverse = True
continue
if command == 'D':
if not array or array[0] =='':
is_break = True
print("error")
break
elif is_reverse:
array.pop()
else:
array.popleft()
if not is_break:
if is_reverse:
array.reverse()
print('['+','.join(array)+']')
else:
print('['+','.join(array)+']')
딱히 없었다.
O(N)인 것을 O(1)로 해결할 수 있으면, 무조건 O(1)로 해결하자.