import sys # 스택 - 내장 list와 구조가 동일하여 추가적인 패키지를 불러오지 않아도 된다.
# 임의로 만들어 본 스택 - 백준 10828
n = int(sys.stdin.readline())
m_list = [sys.stdin.readline().replace('\n', '') for _ in range(n)]
s_list = []
ans_list = []
for m in m_list:
if m.split()[0] == 'push':
s_list.append(m.split()[1])
elif m.split()[0] == 'pop':
if len(s_list) != 0:
ans_list.append(s_list[-1])
s_list.pop()
else: ans_list.append(-1)
elif m.split()[0] == 'size':
ans_list.append(len(s_list))
elif m.split()[0] == 'empty':
if len(s_list) == 0: ans_list.append(1)
else: ans_list.append(0)
elif m.split()[0] == 'top':
if len(s_list) == 0: ans_list.append(-1)
else:
ans_list.append(s_list[-1])
for x in ans_list:
print(x)
선입선출.
# 덱
from collections import deque
queue = deque([4, 5, 6])
queue.append(7)
queue.append(8)
print(queue) # deque([4, 5, 6, 7, 8])
queue.popleft()
queue.popleft()
print(queue) # deque([6, 7, 8])
# 클래스 모듈
from queue import Queue
que = Queue()
que.put(4)
que.put(5)
que.put(6)
print(que.get())
#우선순위 큐
from queue import PriorityQueue
p_que = PriorityQueue()
p_que.put(4)
p_que.put(1)
p_que.put(7)
p_que.put(3)
print(p_que.get())
#우선순위 큐 2
import heapq
pq = []
heapq.heappush(pq, 1)
heapq.heappush(pq, 3)
heapq.heappush(pq, 2)
heapq.heappop(pq) # 1
heapq.heappop(pq) # 2
heapq.heappop(pq) # 3
큐의 경우 일반 list 에서 pop(0)을 할 경우, 나머지 원소들을 하나씩 당기는 과정에서 시간적 손실이 일어나기에 deque를 활용한다.