Heap, Stack, Queue는 언제 쓰는 자료구조일까? for python

2025. 4. 16. 09:43·Computer Science
728x90

자료구조는 상황에 따라 골라야한다.

자료구조는 단순히 데이터를 담는 용기가 아니라,

어떤 방식으로 꺼낼 것인가를 정의합니다.


Stack (스택) - LIFO 구조

Last In, First Out - 나중에 넣은 게 넘저 나옴 (쌓는 접시 구조)

 

🟢 사용 예시

  • 웹 브라우저 뒤로 가기
  • 재귀 호출 (함수 호출 스택)
  • 괄호 짝 검사
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print(stack.pop())

# 3

🟧 시간 복잡도 : append() - O(1), pop() - O(1)


Queue (큐) - FIFO 구조

First In, First Out - 먼저 들어온 게 먼저 나옴 (줄 서기)

 

🟢 사용 예시

  • 프린트 작업 대기열
  • CPU 태스크 스케줄링
  • BFS (너부 우선 탐색)
from collections import deque

queue = deque()
queue.append(1)
queue.append(2)
queue.append(3)
print(queue.popleft())

# 1

🟧시간 복잡도 : append() - O(1), popleft() - O(1)


Heap (힙) - 우선순위 큐

항상 최댓값 또는 최솟값을 빠르게 꺼낼 수 있는 자료구조
  • 내부적으로는 이진 트리 구조
  • Python의 heapq는 Min Heap 기반
    (최소값이 먼저 나옴)

🟢 사용 예시

  • 우선순위가 있는 작업 스케줄링
  • Dijkstra 최단 경로
  • 실시간 Top-K 문제
import heapq

nums = [5, 2, 9, 1]
heapq.heapify(nums)      # 리스트를 힙으로 변환
heapq.heappush(nums, 3)  # 삽입
print(heapq.heappop(nums))

# 1 (최솟값)

 

 

🟧시간 복잡도 :  heappush, heappop – O(log n)


언제 사용해야 할까?

상황 추천 자료구조
나중에 넣은 걸 먼저 꺼내야 할 때 Stack
먼저 넣은 걸 먼저 꺼내야 할 때 Queue
우선순위에 따라 처리하고 싶을 때 Heap
  • 괄호 검사 → Stack
  • BFS 탐색 → Queue
  • 실시간 인기 검색어 Top 10 → Heap
  • 병합 정렬의 병합 단계 → Queue or Stack (depending on impl.)

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Computer Science' 카테고리의 다른 글

DFS 깊이 우선 탐색의 원리와 활용  (0) 2025.04.16
Hash Table이란? for python  (0) 2025.04.16
이진 탐색(Binary Search), 선형 탐색보다 얼마나 빠를까?  (0) 2025.04.15
정렬 알고리즘 (버블, 선택, 삽입)  (0) 2025.04.15
시간 복잡도와 Big-O  (0) 2025.04.15
'Computer Science' 카테고리의 다른 글
  • DFS 깊이 우선 탐색의 원리와 활용
  • Hash Table이란? for python
  • 이진 탐색(Binary Search), 선형 탐색보다 얼마나 빠를까?
  • 정렬 알고리즘 (버블, 선택, 삽입)
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (147)
      • python (45)
        • selenium (4)
        • algorithm (9)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (9)
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
Heap, Stack, Queue는 언제 쓰는 자료구조일까? for python
상단으로

티스토리툴바