728x90
๋ฐ์ํ
๐ ์๋ฃ๊ตฌ์กฐ๋?
๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ , ๊บผ๋ด๊ณ , ์กฐ์ํ๊ธฐ ์ํ ๊ตฌ์กฐ์ด๋ค.
๐ฆ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ ์ด์ ๋ฆฌ
์๋ฃ๊ตฌ์กฐ | ๊ตฌ์กฐ ํน์ง | ๊บผ๋ด๋ ์์ | ์ฌ์ฉ ์์ |
๋ฐฐ์ด (Array / List) | ์ ํ๊ตฌ์กฐ, ์์๊ฐ ์๋ค | ์ธ๋ฑ์ค๋ก ์ ๊ทผ | ๋ฆฌ์คํธ, ์ํ |
์คํ (Stack) | ํ ์ชฝ ๋์๋ง ๋ฃ๊ณ ๊บผ๋ | LIFO (๋์ค์ ๋ฃ์๊ฒ ๋จผ์ ๋์ด) = ํ๋ง๊ธ์ค ํต | ๋๋๋ฆฌ๊ธฐ(Undo), ๊ดํธ ๊ฒ์ฌ |
ํ (Queue) | ํ ์ชฝ์ ๋ฃ๊ณ ๋ค๋ฅธ์ชฝ์์ ๊บผ๋ | FIFO (๋จผ์ ๋ฃ์๊ฒ ๋จผ์ ๋์ด / ์ ์ ์ ์ถ) = ํ์ดํ | BFS, ๋๊ธฐ์ด |
๋ฑ (Deque) | ์ ์ชฝ ๋์์ ๋ฃ๊ณ ๊บผ๋ด๊ธฐ ๊ฐ๋ฅ | ์๋ฐฉํฅ ๊ฐ๋ฅ | ์ฌ๋ผ์ด๋ฉ ์๋์ฐ, ์์ชฝ ํ์ |
ํ (Heap) | ์์ ์ด์งํธ๋ฆฌ, ์ฐ์ ์์ ๊ธฐ๋ฐ | ์ฐ์ ์์ ๋์ ๊ฐ ๋จผ์ | ๋ค์ต์คํธ๋ผ, ์ค์ผ์ค๋ง |
ํธ๋ฆฌ (Tree) | ๊ณ์ธต๊ตฌ์กฐ, ๋ถ๋ชจ-์์ ๊ด๊ณ | ์ํ ๋ฒ์ ๋ฐ๋ผ ๋ค๋ฆ | ํด๋ ๊ตฌ์กฐ, ํธ๋ฆฌ ํ์ |
๊ทธ๋ํ (Graph) | ์ ์ ๊ณผ ๊ฐ์ ๊ด๊ณ | DFS, BFS, ๋ค์ต์คํธ๋ผ ๋ฑ | ๊ฒฝ๋ก ํ์ |
ํด์ (HashMap / Dictionary) | key → value | key๋ก ์ ๊ทผ | ๋์ ๋๋ฆฌ, ์นด์ดํ |
๐ฅ ์คํ(Stack) - ๋ฆ๊ฒ ๋ค์ด๊ฐ๊ฑฐ ๋จผ์ ๋์ด
stack = []
# ๊ฐ ์ถ๊ฐ (push)
stack.append(1)
stack.append(2)
# ๊ฐ ์ ๊ฑฐ (pop)
print(stack.pop()) # โ 2
print(stack.pop()) # โ 1
๐ชํ(Queue) - ์ ์ ์ ์ถ
๋ค์์ ๋ฃ๊ณ , ์์์ ๊บผ๋ธ๋ค. / ํ์ดํ, ์ค์๊ธฐ ๋ฑ
from collections import deque
queue = deque()
# ๊ฐ ์ถ๊ฐ (enqueue)
queue.append(1)
queue.append(2)
# ๊ฐ ์ ๊ฑฐ (dequeue)
print(queue.popleft()) # โ 1
print(queue.popleft()) # โ 2
๐ ํ(Heap) — ์ฐ์ ์์ ๋์๊ฑฐ ๋จผ์
๊ธฐ๋ณธ์ ์ต์ํ
import heapq
heap = []
# ๊ฐ ์ถ๊ฐ (์๋ ์ ๋ ฌ๋จ)
heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)
# ์ต์๊ฐ ๊บผ๋ด๊ธฐ
print(heapq.heappop(heap)) # โ 1
print(heapq.heappop(heap)) # โ 2
print(heapq.heappop(heap)) # โ 3
๐ณ ํธ๋ฆฌ(Tree) — ๊ณ์ธต์ ๊ตฌ์กฐ
class Node:
def __init__(self, value):
self.value = value
self.children = []
# ํธ๋ฆฌ ์์ฑ
root = Node(1)
child1 = Node(2)
child2 = Node(3)
root.children.append(child1)
root.children.append(child2)
# ์ํ ์์ (DFS)
def dfs(node):
print(node.value)
for child in node.children:
dfs(child)
dfs(root)
+) ํธ๋ฆฌ์ ๊ทธ๋ํ์ ์ฐจ์ด๋?
ํธ๋ฆฌ (Tree) | ๊ทธ๋ํ (Graph) | |
์ ์ | ์ฌ์ดํด ์๋ ์ฐ๊ฒฐ ๊ทธ๋ํ (์ผ์ข ์ ๊ทธ๋ํ) | **์ ์ (๋ ธ๋)๊ณผ ๊ฐ์ (์ฐ๊ฒฐ)**์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ |
๋ฐฉํฅ์ฑ | ๋ณดํต ๋ฐฉํฅ ์์ (๋ถ๋ชจ → ์์) | ๋ฐฉํฅ ๊ทธ๋ํ / ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ ๋ชจ๋ ๊ฐ๋ฅ |
๋ฃจํธ | ๋ฐ๋์ 1๊ฐ์ ๋ฃจํธ ๋ ธ๋(root) ์์ | ๋ฃจํธ ์์ (๋ชจ๋ ๋ ธ๋๊ฐ ๋๋ฑํ ์ ์์) |
์ฌ์ดํด | โ ์์ (์ํ ๋ถ๊ฐ) | โ ์์ ์ ์์ (์: A → B → A) |
๊ฒฝ๋ก ์ | ๋ ๋ ธ๋ ์ฌ์ด ๊ฒฝ๋ก๋ 1๊ฐ๋ฟ | ๋ ๋ ธ๋ ์ฌ์ด์ ์ฌ๋ฌ ๊ฒฝ๋ก ๊ฐ๋ฅ |
์์ | ํด๋ ๊ตฌ์กฐ, ์ด์ง ํ์ ํธ๋ฆฌ | ์งํ์ฒ ๋ ธ์ ๋, SNS ์น๊ตฌ ๊ด๊ณ |
์คํ, ํ, ํ, ํธ๋ฆฌ ์ ๋ฆฌ
๊ตฌ์กฐ | ์ฝ์ | ๊บผ๋ด๊ธฐ | ์์ |
์คํ | ์์ ๋ฃ์ | ์์์ ๊บผ๋ | LIFO |
ํ | ๋ค์ ๋ฃ์ | ์์์ ๊บผ๋ | FIFO |
ํ | ์๋ฌด๋ฐ๋ ๋ฃ์ | ์ฐ์ ์์๋๋ก ๊บผ๋ | ๊ฐ ๊ธฐ์ค |
ํธ๋ฆฌ | ๋ถ๋ชจ → ์์ ์ฐ๊ฒฐ | ํ์ ๋ฐฉ์ ๋ฐ๋ผ ๋ค๋ฆ | ๊ณ์ธต ๊ตฌ์กฐ |
728x90
๋ฐ์ํ
'๐ป ์ฝ๋ฉํ ์คํธ > ์๊ณ ๋ฆฌ์ฆ, ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ์ต๋จ๊ฒฝ๋ก (0) | 2025.05.02 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ (0) | 2025.05.01 |
[์๋ฃ๊ตฌ์กฐ] ํ (Heap) - ํ์ด์ฌ๋ถํฐ ์๋ฐ์คํฌ๋ฆฝํธ๊น์ง (1) | 2025.04.30 |
DFS ์์ ์ซ์ ๋จผ์ ํ์ (0) | 2025.03.28 |
๊น์ด์ฐ์ ํ์(DFS), ๋๋น์ฐ์ ํ์ (BFS) - python์ผ๋ก ๊ตฌํํ๊ธฐ (1) | 2025.03.27 |