from collections import deque
import sys
input = sys.stdin.readline
N = int(input())
queue = deque()
for _ in range(N):
command = input().split()
if command[0] == 'push':
queue.append(command[1])
elif command[0] == 'pop':
if queue:
print(queue.popleft())
else:
print(-1)
elif command[0] == 'size':
print(len(queue))
elif command[0] == 'empty':
print(0 if queue else 1)
elif command[0] == 'front':
if queue:
print(queue[0])
else:
print(-1)
elif command[0] == 'back':
if queue:
print(queue[-1])
else:
print(-1)
"double-ended queue"의 약자로, 양쪽 끝에서 데이터를 추가하거나 제거할 수 있는 일종의 큐를 구현한 객체이다. 'deque'는 일반적인 리스트보다 양쪽 끝에서 요소 추가 및 제거가 효율적이다.
Double-Ended: deque는 양쪽 끝에서 데이터를 추가하거나 제거할 수 있다. 이것은 일반적인 큐 구조와 스택 구조를 모두 지원한다는 것을 의미한다.
메서드:
효율성: deque는 양쪽 끝에서의 요소 추가 및 제거가 일반 리스트보다 더 효율적입니다. 리스트는 오른쪽 끝에서는 효율적이지만, 왼쪽 끝에서는 그렇지 않습니다.
큐 구현: deque를 사용하여 FIFO(First-In-First-Out) 큐를 구현할 수 있습니다. 이때, append()로 새 요소를 추가하고 popleft()로 가장 먼저 들어온 요소를 제거합니다.