그림 출처 : https://galid1.tistory.com/483
큐는 선입선출(First-In First-Out) 구조다. 큐에 데이터를 추가하는 작업을 인큐(enqueue), 데이터를 꺼내는 작업을 디큐(dequeue)라고 한다. 그리고 데이터를 꺼내는 쪽은 프런트(front), 데이터를 넣는 쪽을 리어(rear)라고 한다.
import sys
N = int(sys.stdin.readline())
queue = []
cnt = 0 # 큐의 맨 앞을 가리키는 인덱스 값을 가리키는 변수
for i in range(N):
order = list(sys.stdin.readline().split())
if order[0] == 'push':
queue.append(int(order[1]))
elif order[0] == 'pop':
if len(queue) - cnt == 0: # 큐의 길이와 카운터를 빼서 0이라면 큐는 빈 상태
print(-1)
else:
print(queue[cnt])
cnt += 1 # pop 할때마다 cnt에 1을 누적
elif order[0] == 'size':
print(len(queue)-cnt)
elif order[0] == 'empty':
if len(queue)-cnt == 0: # 큐가 비어있으면 1을 출력
print(1)
else:
print(0)
elif order[0] == 'front':
if len(queue)-cnt == 0: # 큐가 비어있다면 -1을 출력
print(-1)
else:
print(queue[cnt]) # 큐의 가장 앞에 있는 원소 출력
elif order[0] == 'back':
if len(queue)-cnt == 0: # 큐가 비어있다면 -1을 출력
print(-1)
else:
print(queue[-1]) # 큐의 가장 뒤에 있는 원소 출력