isPowerfulBlog
[자료구조] 큐, 스택, 힙 본문
스택 (Stack)
후입선출(LIFO, Last In First Out)
사용
리스트로 구현
# define stack
stack = []
# add
stack.append(item)
# pop (가장 마지막에 in된 item return하며 stack에서 제거)
stack.pop()
큐 (Queue)
선입선출(FIFO, First In First Out)
사용
collections 모듈의 deque 사용하여 구현deque
양방향 연결 리스트로 구성
# import library
from collections import deque
# define queue
queue = deque()
# add
queue.append(item)
# add left
queue.appendleft(item)
# insert
queue.insert(idx, item)
# pop 가장 마지막(오른쪽)에 append된 item 리턴 후 제거
queue.pop()
# pop left 가장 처음(왼쪽)에 append된 item 리턴 후 제거
queue.popleft()
# convert deque to list
list(queue)
힙 (Heap)
우선순위큐 (priority queue, 우선 순위가 높은 데이터부터 return)를 위한 자료구조
노드가 왼쪽부터 채워지는 완전이진트리 형태
Min Heap
1
/ \
3 2
/ \ / \
5 4 8 7
/ \
9 6
작은 수를 우선 순위에 둠
자식 노드보다 부모 노드의 값이 작음
Max Heap
9
/ \
8 7
/ \ / \
6 4 3 2
/ \
1 5
큰 수를 우선 순위에 둠
자식 노드보다 부모 노드의 값이 큼
사용
# import heapq module
import heapq
# define heap
heap = []
# insert node
heapq.heappush(heap, item)
# delete node 제일 우선순위가 높은 item return
heapq.heappop(heap)
들숨에 알고리즘! 날숨에 알고리즘!
References
https://velog.io/@gillog/Python-Stack-Queue-%EA%B8%B0%EB%B3%B8-module-%EC%82%AC%EC%9A%A9-%EC%A0%95%EB%A6%AC
https://gmlwjd9405.github.io/2018/05/10/data-structure-heap.html
https://velog.io/@gnwjd309/data-structure-heap
'Algorithm' 카테고리의 다른 글
[re-Solved] BOJ: 10845 | 큐 (0) | 2024.12.10 |
---|---|
[Solved] BOJ: 2457 | 공주님의 정원 (2) | 2023.12.22 |
[Solved] BOJ: 11725 | 트리의 부모 찾기 (0) | 2023.02.02 |
[Solved] BOJ: 4963 | 섬의 개수 (0) | 2023.02.02 |
[Solved] BOJ: 2630 | 색종이 만들기 (0) | 2022.12.06 |