import sys
f_deque = []
b_deque = []
for i in range(int(sys.stdin.readline())):
commend = sys.stdin.readline().split()
if commend[0] == "push_front":
f_deque.append(commend[1])
elif commend[0] == "push_back":
b_deque.append(commend[1])
elif commend[0] == "pop_front":
if f_deque:
print(f_deque.pop())
elif b_deque:
print(b_deque.pop(0))
else:
print(-1)
elif commend[0] == "pop_back":
if b_deque:
print(b_deque.pop())
elif f_deque:
print(f_deque.pop(0))
else:
print(-1)
elif commend[0] == "size":
print(len(f_deque)+len(b_deque))
elif commend[0] == "empty":
if f_deque or b_deque:
print(0)
else:
print(1)
elif commend[0] == "front":
if f_deque:
print(f_deque[-1])
elif b_deque:
print(b_deque[0])
else:
print(-1)
elif commend[0] == "back":
if b_deque:
print(b_deque[-1])
elif f_deque:
print(f_deque[0])
else:
print(-1)
실행 속도를 줄이기 위해 두개의 스택 구조를 사용하여 덱 구조를 구성하였다
한개의 스택을 뒤집어서 앞쪽에 붙이는 ][ 방법으로 코드를 구성해보았다
'알고리듬' 카테고리의 다른 글
[10799] 쇠막대기 (0) | 2022.03.14 |
---|---|
[17413] 단어 뒤집기 2 (0) | 2022.03.11 |
[1158] 조세퍼스 (0) | 2022.02.18 |
[10845] 큐 (0) | 2022.02.15 |
[1406] 에디터 (0) | 2022.02.10 |