큐 기본 구조 활용
알고리즘: Queue
import sys
q = []
n = int(sys.stdin.readline())
for i in range(n):
cmd = sys.stdin.readline().split()
if cmd[0] == 'push':
q.append(int(cmd[1])) # 앞부터 채움
elif cmd[0] == 'pop':
if len(q) == 0:
print(-1)
else:
print(q.pop(0)) # 맨 앞부터 뺄 수 있도록 인덱스값 부여
elif cmd[0] == 'size':
print(len(q))
elif cmd[0] == 'empty':
if len(q) == 0:
print(1)
else:
print(0)
elif cmd[0] == 'front':
if len(q) == 0:
print(-1)
else:
print(q[0])
elif cmd[0] == 'back':
if len(q) == 0:
print(-1)
else:
print(q[-1])
이번 문제는 큐 자료구조를 다루는 기본 문제였다
큐 자료구조에 관한 자세한 내용과 구현(in c)은 아직 작성을 하지 못하였다..
빨리 자료구조도 복습해야지 😂
큐의 특성인 FIFO구조를 알고 있다면 쉽게 풀 수 있는 문제였다!
다만 파이썬 자체에 queue모듈이 구현되어 있어서 queue.get(), queue.put() 등을 활용할 수 있는데 peek와 같은 기능은 구현되어있지 않다
그래서 처음에는 queue 모듈을 활용하다가 인덱스 접근이 어려워서 그냥 리스트를 활용하기로 했다
리스트 자체에도 구현된 기능이 많아서 딱히 queue 모듈을 사용하지 않아도 될 것 같다..