heap, stack,queue 차이점

Leejaegun·2025년 3월 29일

코딩테스트 시리즈

목록 보기
33/49

좋아! heapqheappush, heappop이 뭐고, 이게 우선순위 큐(Priority Queue)에서 어떤 역할을 하는지, 그리고 이게 스택(stack)이나 큐(queue) 같은 거랑 무슨 차이가 있는지 깔끔하게 설명

heapq.heappush()heapq.heappop()이란?

heapq파이썬 기본 라이브러리로, 최소 힙(min-heap) 기반 우선순위 큐를 구현할 수 있음.

  • heappush(heap, item)
    힙 구조에 값 하나 넣기
  • heappop(heap)
    힙에서 가장 작은 값 꺼내기
import heapq

heap = []
heapq.heappush(heap, 5)
heapq.heappush(heap, 3)
heapq.heappush(heap, 7)

print(heapq.heappop(heap))  # 3 (가장 작은 값)
print(heapq.heappop(heap))  # 5

🤔 그럼 Stack / Queue / Priority Queue 차이는?

자료구조삽입(push) 순서꺼낼 때(pop) 나오는 순서
Stack (스택)차곡차곡 쌓임마지막에 넣은 게 먼저 나옴 (LIFO)
Queue (큐)줄 서듯 들어감먼저 넣은 게 먼저 나옴 (FIFO)
Priority Queue (우선순위 큐)아무 순서로 넣어도 됨우선순위 가장 높은 것(작은 수 등) 이 먼저 나옴

🔥 예시 코드로 비교해보자

import heapq
from collections import deque

# Stack (LIFO)
stack = []
stack.append(10)
stack.append(5)
stack.append(20)
print("Stack pop:", stack.pop())  # 20

# Queue (FIFO)
queue = deque()
queue.append(10)
queue.append(5)
queue.append(20)
print("Queue pop:", queue.popleft())  # 10

# Priority Queue (우선순위 큐 - 최소 힙)
heap = []
heapq.heappush(heap, 10)
heapq.heappush(heap, 5)
heapq.heappush(heap, 20)
print("Heap pop:", heapq.heappop(heap))  # 5 (가장 작은 값)

💡 정리하면

  • stack.pop()마지막에 넣은 거 나옴
  • queue.popleft()처음 넣은 거 나옴
  • heapq.heappop()가장 작은 값 나옴 (우선순위 높은 거 나옴)

profile
Lee_AA

0개의 댓글