์ด ํฌ์คํ ์ ์ฃผํ์ฒ ์ '๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ' 5.3์ฅ์ ํ ๋๋ก ์์ฑ๋์์ต๋๋ค.
๋น์ ํ ์๋ฃ ๊ตฌ์กฐ๋,
์ผ๋ ฌ๋ก ๋์ดํ์ง ์๊ณ ์๋ฃ ์์๋ ๊ด๊ณ๊ฐ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋งํฉ๋๋ค.
๐ ๊ทธ๋ํ(Graph)
๊ทธ๋ํ๋ ์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ ๊ตฌ์กฐ์ ๋๋ค.
- ์ ์ (vertex/node)
- ํญ๋ชฉ ์์ฒด๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ์์
- ๊ฐ์ (edge)
- ์ ์ ๋ค์ ์ฐ๊ฒฐํ๋ ์ ์ผ๋ก, ์ ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ํํ
- ๋จ๋ฐฉํฅ์ผ ์๋, ์๋ฐฉํฅ์ผ ์๋ ์์

- ์ฐจ์(degree): ์ ์ ์ ์ฐ๊ฒฐ๋ ๊ฐ์ ์ ๊ฐ์
- ๊ฒฝ๋ก(path): ํ ์ ์ ์์ ๋ค๋ฅธ ์ ์ ์ผ๋ก ์ด๋ํ ์ ์๋ ๊ฐ์ ๋ค์ ์์
- ์ฌ์ดํด(cycle): ์์ ์ ์ ๊ณผ ๋ ์ ์ ์ด ๋์ผํ ๊ฒฝ๋ก
- ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ(Undirected Graph): ๊ฐ์ ์ด ์๋ฐฉํฅ์ผ๋ก ์ด๋ ๊ฐ๋ฅํ ๊ทธ๋ํ
- ๋ฐฉํฅ ๊ทธ๋ํ(Directed Graph/Digraph): ๊ฐ์ ์ ๋ฐฉํฅ์ด ์์ด ํ์ชฝ์ผ๋ก๋ง ์ด๋ ๊ฐ๋ฅํ ๊ทธ๋ํ
- ๊ฐ์ค์น ๊ทธ๋ํ(Weighted Graph): ๊ฐ์ ์ ๋น์ฉ์ด๋ ๊ฑฐ๋ฆฌ ๋ฑ์ ๊ฐ์ค์น๊ฐ ํ ๋น๋ ๊ทธ๋ํ, ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ๋ฑ์์ ํ์ฉ

๐ ํธ๋ฆฌ(Tree)
ํธ๋ฆฌ๋ ๊ทธ๋ํ์ฒ๋ผ ์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ๊ตฌ์ฑ๋ ๊ตฌ์กฐ๋ก,
์ ์ ๋ค์ด ๋๋ญ๊ฐ์ง์ฒ๋ผ ์ฐ๊ฒฐ๋ ๊ณ์ธต์ ๋ฐ์ดํฐ์ ์งํฉ์ ๋๋ค.

ํธ๋ฆฌ์์๋ ๊ฐ ์ ์ ์ ๋ณดํต ๋ ธ๋๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
- ๋ฃจํธ ๋ ธ๋: ํธ๋ฆฌ์ ์ต์์ ๋ ธ๋๋ก, ๋ถ๋ชจ๊ฐ ์๋ ์ ์ผํ ๋ ธ๋
- ๋ฆฌํ ๋ ธ๋: ์์์ด ์๋ ๋ ธ๋
- ๋ด๋ถ ๋ ธ๋: ๋ฃจํธ ๋ ธ๋๋, ๋ฆฌํ ๋ ธ๋๋ ์๋ ์์์ด ์๋ ๋ ธ๋
- ์ฐจ์(degree): ์ด๋ค ๋ ธ๋๊ฐ ๊ฐ์ง ์์์ ๊ฐ์
- ๋์ด(height): ํน์ ๋
ธ๋์์๋ถํฐ ๋ฆฌํ ๋
ธ๋๊น์ง์ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก์ ๊ฐ์ ์
- ํธ๋ฆฌ์ ๋์ด = ๋ฃจํธ ๋ ธ๋์ ๋์ด
- ๊น์ด(depth): ๋ฃจํธ ๋
ธ๋๋ก๋ถํฐ ํน์ ๋
ธ๋๊น์ง ๊ฐ์ ์
- ๋ฃจํธ ๋ ธ๋์ ๊น์ด๋ 0
- ๋ ๋ฒจ(level): ๋ณดํต ๊น์ด์ ๊ฐ์ ์๋ฏธ, ๋ฃจํธ๋ ๋ ๋ฒจ 1๋ถํฐ ์์
- ๊น์ด 0 = ๋ ๋ฒจ 1
- ์๋ธ ํธ๋ฆฌ: ํธ๋ฆฌ ๋ด์ ํ์ ์งํฉ(๋ถ๋ถ ์งํฉ)
๐ ์ด์ง ํธ๋ฆฌ(Binary Tree)
ํธ๋ฆฌ ์ค์์ ๊ฐ ๋ ธ๋์ ์ฐจ์(์์์ ์)๊ฐ ์ต๋ 2๊ฐ์ธ ํธ๋ฆฌ๋ฅผ ์ด์ง ํธ๋ฆฌ๋ผ๊ณ ํฉ๋๋ค.

- ์ ์ด์ง ํธ๋ฆฌ(Full Binary Tree)
- ๊ฐ ๋ด๋ถ ๋ ธ๋๊ฐ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ํธ๋ฆฌ
- ํ์ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์์(์์์ด 0๊ฐ ๋๋ 2๊ฐ)
- ์์ ์ด์ง ํธ๋ฆฌ(Complete Binary Tree)
- ๋ถ๋ชจ, ์ผ์ชฝ ์์, ์ค๋ฅธ์ชฝ ์์ ์์ผ๋ก ์ฑ์์ง๋ ํธ๋ฆฌ
- ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ๊ณ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ๋ ์ฐจ์์ด์ผ ํ๋ฉฐ, ๋ง์ง๋ง ๋ ๋ฒจ์ ๋ ธ๋๋ ์ ๋ถ ์ฐจ์์ง ์์๋ ๋์ง๋ง ์ผ์ชฝ๋ถํฐ ์ฑ์์ ธ ์์ด์ผ ํจ
- ๋ณ์ง ์ด์ง ํธ๋ฆฌ(Degenerate Binary Tree)
- ๊ฐ ๋ถ๋ชจ ๋ ธ๋๊ฐ ์ค์ง 1๊ฐ์ ์์ ๋ ธ๋๋ง ๊ฐ์ง๋ ํธ๋ฆฌ
- ์ค์ง์ ์ผ๋ก ๋ฆฌ์คํธ(List) ๊ตฌ์กฐ์ฒ๋ผ ๋์ํจ
- ํฌํ ์ด์ง ํธ๋ฆฌ(Perfect Binary Tree)
- ์ ์ด์ง ํธ๋ฆฌ์ด๋ฉด์ ์์ ์ด์ง ํธ๋ฆฌ์ธ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ ์๋ ์ด์ง ํธ๋ฆฌ
- ๊ท ํ ์ด์ง ํธ๋ฆฌ(Balanced Binary Tree)
- ์ผ์ชฝ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ๋ ธ๋์ ๋์ด ์ฐจ์ด๊ฐ 1 ์ดํ์ธ, ํ์ชฝ์ผ๋ก ์ง๋์น๊ฒ ์น์ฐ์น์ง ์๊ณ ๊ท ํ์ ์ด๋ฃจ๊ณ ์๋ ํธ๋ฆฌ
- ํธ๋ฆฌ๊ฐ ํ ์ชฝ์ผ๋ก ์น์ฐ์น ๊ฒฝ์ฐ, ์๊ฐ ๋ณต์ก๋๊ฐ ์ ํ๋๋ฏ๋ก ๊ณ ์๋ ๊ตฌ์กฐ
๐ ์ด์ง ํธ๋ฆฌ์ ์ํ

- ์ ์ ์ํ(Preorder Traversal)
- ์์ → ์ผ์ชฝ ์์ → ์ค๋ฅธ์ชฝ ์์ ์์๋ก ์ํ
- 0 → 1 → 3 → 7 → 8 → 4 → 9 → 10 → 2 → 5 → 11 → 5 → 6
- ์ค์ ์ํ(Inorder Traversal)
- ์ผ์ชฝ ์์ → ์์ → ์ค๋ฅธ์ชฝ ์์ ์์๋ก ์ํ
- 7 → 3 → 8 → 1 → 4 → 9 → 10 → 0 → 11 → 5 → 2→ 6
- ํ์ ์ํ(Postorder Traversal)
- ์ผ์ชฝ ์์ → ์ค๋ฅธ์ชฝ ์์ → ์์ ์์๋ก ์ํ
- 7 → 8 → 3 → 9 → 10 → 4 → 1 → 11 → 5 → 6 → 2 → 0
๐ ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree, BST)
์ด์ง ํ์ ํธ๋ฆฌ๋ ํน์ ๊ท์น์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ
๋ฐ์ดํฐ์ ๊ฒ์ ์ฑ๋ฅ์ ๋์ธ ์ด์ง ํธ๋ฆฌ์ ๋๋ค.
- ๋ ธ๋์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์๋ ๋ ธ๋์ ๊ฐ๋ณด๋ค ์์ ๊ฐ๋ง ์ ์ฅ
- ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์๋ ๋ ธ๋์ ๊ฐ๋ณด๋ค ํฐ ๊ฐ๋ง ์ ์ฅ
- ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ ์ด์ง ํ์ ํธ๋ฆฌ

์ด ๊ตฌ์กฐ์์ 10์ ์ฐพ์ผ๋ ค๊ณ ํ๋ค๋ฉด, ๋ฃจํธ ๋ ธ๋์ธ 25๋ณด๋ค ์์ผ๋ฏ๋ก ์ผ์ชฝ ๋ ธ๋๋ค๋ง ํ์ธํ๋ฉด ๋๋ค๋ ๊ฑธ ์ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ ํ๊ท ์ ์ผ๋ก O(logN)์ ์๊ฐ ๋ณต์ก๋๋ก ํ์, ์ฝ์ , ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.

๋จ ํธ๋ฆฌ๊ฐ ํ์ชฝ์ผ๋ก ์ง๋์น๊ฒ ์น์ฐ์น๋ ํธํฅ ํธ๋ฆฌ๊ฐ ๋๋ฉด ์ต์ ์ ๊ฒฝ์ฐ O(N)์ ์๊ฐ์ด ํ์ํ ์๋ ์์ต๋๋ค.
๊ทธ๋์ ์ด์ง ํ์ ํธ๋ฆฌ์ ๊ท ํ์ ์ ์งํ์ฌ ์ต์ ์ ์ฑ๋ฅ์ ๋ฐฉ์งํ๋ ์๋ฃ ๊ตฌ์กฐ๋ก
AVL ํธ๋ฆฌ๋ ๋ ๋-๋ธ๋ ํธ๋ฆฌ(Red-Black ํธ๋ฆฌ)๊ฐ ์์ต๋๋ค.
๐ AVL ํธ๋ฆฌ(Adelson-Velsky and Landis Tree)
์ต๊ฐ์ ๊ฒฝ์ฐ ์ ํ์ ์ธ ํธ๋ฆฌ๊ฐ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ค์ค๋ก ๊ท ํ์ ์ก๋,
๊ท ํ ์กํ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋๋ค.
- ํญ์ ๋ชจ๋ ๋ ธ๋์์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋์ด์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋์ด ์ฐจ์ด๊ฐ ์ต๋ 1์ ๋์ง ์๋๋ก ๊ท ํ์ ์กฐ์
- ๋ฐ์ดํฐ๋ฅผ ์ฝ์ /์ญ์ ํ ๋๋ง๋ค ๊ท ํ์ด ๊นจ์ง ํ์ (Rotation) ์ฐ์ฐ์ ํตํด ํธ๋ฆฌ๋ฅผ ์ฌ๊ตฌ์ฑ
- ํ์ ์ฐ์ฐ์ ๋ํ ์์ธํ ์ค๋ช ์ด ํ์ํ๋ค๋ฉด ์ด ๋ธ๋ก๊ทธ๋ฅผ ์ถ์ฒํฉ๋๋ค: https://lifeandit.tistory.com/101
- ํ์, ์ฝ์ , ์ญ์ ๋ชจ๋ ์๊ฐ ๋ณต์ก๋๊ฐ O(lonN) ์์
๐ ๋ ๋-๋ธ๋ ํธ๋ฆฌ(Red-Black Tree)
๊ฐ ๋ ธ๋๋ฅผ ๋นจ๊ฐ์ ๋๋ ๊ฒ์์์ผ๋ก ์์น ํ์ฌ ์ฝ์ ๋ฐ ์ญ์ ์ค์ ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์ ์งํ๋๋ก ํ๋
๋๋ค๋ฅธ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋๋ค.
๋ ๋-๋ธ๋ ํธ๋ฆฌ์์๋ ๋ ธ๋ ํ์, ์ฝ์ , ์ญ์ ์ ์๊ฐ ๋ณต์ก๋๋ O(logN)์ ๋๋ค.

- ๋ชจ๋ ๋ ธ๋๋ Red ๋๋ Black์ผ๋ก ์์น
- ๋ฃจํธ ๋ ธ๋๋ Black์ผ๋ก ์์น
- ๋ชจ๋ ๋ฆฌํ ๋ ธ๋(NIL)๋ Black์ผ๋ก ์์น
- Red์ ๋ ธ๋์ ์์์ ํญ์ Black์ผ๋ก ์์น (Red ๋ ธ๋๊ฐ ์ฐ์๋ ์ ์์)
- ์ด๋ค ๋ ธ๋์์๋ถํฐ ๋ฆฌํ ๋ ธ๋์ ์ด๋ฅด๋ ๋ชจ๋ ๊ฒฝ๋ก์์ Black ๋ ธ๋์ ์(Black height)๋ ๊ฐ์
AVL ํธ๋ฆฌ๋ ๋ชจ๋ ๋ ธ๋๊ฐ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋์ด ์ฐจ์ด๊ฐ ์ต๋ 1์ด ๋์ด์ผ ํ๋ค๋ ์๊ฒฉํ ๊ท์น์ด์์ง๋ง,
๋ ๋-๋ธ๋ ํธ๋ฆฌ์์๋ ๋์ด ์ฐจ์ด๋ฅผ ์ง์ ์ ์ผ๋ก ์ ํํ๋ ๋์ , Black Height๋ผ๋ ๊ฐ๋ ์ ์ถ๊ฐํ์ฌ ํ์ชฝ ์๋ธ ํธ๋ฆฌ๊ฐ ๋ค๋ฅธ ์ชฝ ์๋ธ ํธ๋ฆฌ๋ณด๋ค ์ต๋ 2๋ฐฐ๊น์ง ๊ธธ์ด์ง๋ ๊ฒ์ ํ์ฉํฉ๋๋ค.
์ด์ฒ๋ผ ์๋ฒฝํ ๊ท ํ๋ณด๋ค๋ ํฉ๋ฆฌ์ ์ธ ๊ท ํ์ ์ถ๊ตฌํ๋ ๋ ๋-๋ธ๋ ํธ๋ฆฌ๊ฐ AVL ํธ๋ฆฌ์ ๋นํด ๋ ์๊ฒฉํ๊ณ ์ ์ฐํ์ฌ
์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์กฐ๊ธ ๋ ๋น ๋ฅด๊ณ ํ์์ ์กฐ๊ธ ๋๋ฆฝ๋๋ค. ๊ฐ์ O(logN)์ด์ด๋ ์์ ๊ณ์์ ํฌ๊ธฐ๊ฐ ์ฐจ์ด๋๋ ๊ฒ๋๋ค.
๋ ๋-๋ธ๋ ํธ๋ฆฌ ์ฝ์ /์ญ์ ๊ณผ์ ์ด ๊ถ๊ธํ๋ค๋ฉด ๋ค์ ๋ธ๋ก๊ทธ๋ฅผ ์ถ์ฒํฉ๋๋ค: https://code-lab1.tistory.com/62
๐ ํ(Heap)
์์ ์ด์ง ํธ๋ฆฌ ๊ธฐ๋ฐ์ ์๋ฃ ๊ตฌ์กฐ๋ก
ํญ์ ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๊ธฐ ์ํด ์ค๊ณ๋ ๊ตฌ์กฐ์ ๋๋ค.
ํ์ ๋ฃจํธ ๋ ธ๋์ ํญ์ ๊ทน๋จ์ ์ธ ๊ฐ(์ต๋๊ฐ ๋๋ ์ต์๊ฐ)์ ์ ์ฅํฉ๋๋ค.
- ์ต๋ ํ(Max Heap)
- ๋ถ๋ชจ ๋ ธ๋์ ๊ฐ์ด ์์ ๋ ธ๋์ ๊ฐ๋ณด๋ค ํญ์ ํฌ๊ฑฐ๋ ๊ฐ์
- ๋ฃจํธ ๋ ธ๋์๋ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์ ์ฅ๋จ
- ์ต์ ํ(Min Heap)
- ๋ถ๋ชจ ๋ ธ๋์ ๊ฐ์ด ์์ ๋ ธ๋์ ๊ฐ๋ณด๋ค ํญ์ ์๊ฑฐ๋ ๊ฐ์
- ๋ฃจํธ ๋ ธ๋์๋ ๊ฐ์ฅ ์์ ๊ฐ์ด ์ ์ฅ๋จ

ํ ๊ตฌ์กฐ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ ๋งจ ๋์ ์๋ก์ด ๋ ธ๋๋ฅผ ์ถ๊ฐํ ํ,
๊ท์น์ ๋ง์กฑํ๋๋ก ์๋ก์ด ๋ ธ๋๋ฅผ ๋ถ๋ชจ ๋ ธ๋๋ค๊ณผ ๋น๊ตํ๋ฉฐ ์ ์ ํ ์์น๋ก ์ฎ๊น๋๋ค.
์ด์ฒ๋ผ ํธ๋ฆฌ๊ฐ ์์ ์ด์ง ํธ๋ฆฌ ํํ๋ก ์ ์ง๋๊ธฐ ์ํด
์ฝ์ , ์ญ์ ์์๋ O(logN)์ ์๊ฐ์ด ํ์ํฉ๋๋ค.
ํ์ ์ต๋๊ฐ, ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ํ์ธํ๊ธฐ ์ํ ๊ตฌ์กฐ๋ก ๋ฃจํธ ๋ ธ๋๋ง ํ์ธํ๋ฏ๋ก ์ต๋/์ต์๊ฐ ๊ฒ์ ์๊ฐ์ O(1)์ ๋๋ค.
๐ ์ฐ์ ์์ ํ(Priority Queue)
๋ฐ์ดํฐ๊ฐ ๋ค์ด์จ ์์๋๋ก ์ฒ๋ฆฌ๋๋ ์ผ๋ฐ์ ์ธ ํ์ ๋ฌ๋ฆฌ,
์ฐ์ ์์๊ฐ ๋์ ์์๊ฐ ๋จผ์ ์ถ์ถ(๋๊ธฐ์ด์์ ๊บผ๋ด์ง/์ญ์ )๋ฉ๋๋ค.
๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ์์๋ฅผ O(1)์ ํ์ธํ๊ณ ,
์ฝ์ ๋ฐ ์ถ์ถ์ O(logN)์ ์ํํ๊ธฐ ์ํด ๊ณ ์๋ ๊ตฌ์กฐ์ ๋๋ค.
์ฐ์ ์์ ํ๋ ์ผ๋ฐ์ ์ผ๋ก ํ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
ํ ์์ฑ์ ๋ฐ๋ผ ๋ฃจํธ ๋ ธ๋๊ฐ ํญ์ ์ต์ฐ์ ์์๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
Java์์๋ `java.util.PriorityQueue` ํด๋์ค๊ฐ ์ต์ ํ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋ ์ฐ์ ์์ ํ์ ๋๋ค.
์ฐ์ ์์ ํ๋ ์ฌ๋ฌ ์์ ์ค ๊ฐ์ฅ ์ค์ํ ์์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ ํํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ธ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์์๋ ๋ค์์ผ๋ก ๋ฐฉ๋ฌธํ ๋ ธ๋ ์ค ๋น์ฉ์ด ๊ฐ์ฅ ๋ฎ์ ๋ ธ๋๋ฅผ ์ ํํฉ๋๋ค.
๊ฐ์ด ์์ ์์๊ฐ ์ต์ฐ์ ์์์ธ ์ต์ ํ ๊ธฐ๋ฐ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๐ ๋งต(Map)
ํค(key)์ ๊ฐ(value)์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ์ ๋๋ค.
ํค๋ ๊ฐ ๊ฐ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋๋ถ์ O(1)์ ๊ฐ๊น์ด ์๋๋ก ๋งค์ฐ ๋น ๋ฅด๊ฒ ํ์์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋ชจ๋ ํค๋ ๊ณ ์ ํจ. ์ค๋ณต๋ ํค๋ก ๊ฐ์ ์ฝ์ ํ๋ฉด ๊ธฐ์กด์ ๊ฐ์ด ๋ฎ์ด์์์ง
- ๊ฐ์ ์ค๋ณต๋์ด๋ ์๊ด์์
๐ ์ (Set)
์ค๋ณต๋๋ ์์๊ฐ ์๋ค๋ ๊ฑธ ๋ณด์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ์ ๋๋ค.
- ์ ์ ์ ์ฅ๋๋ ์์๋ค์ ๋ชจ๋ ๊ณ ์ ํ๋ฉฐ, ์ฌ๋ฌ ๋ฒ ์ถ๊ฐํ๋ ค ํด๋ ์ค์ง ํ๋๋ง ์ ์ฅ
- HashSet์ด ํํ๋ฉฐ, ์์๋ ๋ณด์ฅํ์ง ์๋ ํน์ง์ด ์์
์ฝ์ , ์ญ์ , ์กด์ฌ ํ์ธ ์ ํ๊ท O(1)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
๐ ํด์ ํ ์ด๋ธ(Hash Table)
ํค(key)๋ฅผ ํด์ ํจ์(Hash Function)๋ฅผ ํตํด ๋ฐฐ์ด์ ์ธ๋ฑ์ค(Hash Code)๋ก ๋ณํํ์ฌ
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ์๋ฃ ๊ตฌ์กฐ์ ๋๋ค.
์ฝ์ , ์ญ์ , ํ์ ์ ํ๊ท ์ ์ผ๋ก O(1)์ด๋ผ๋ ๋งค์ฐ ๋น ๋ฅธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
๋ฐ์ดํฐ ํ์์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ์ฅํ๋ ค๋ ๋ฐ์ดํฐ์ ๊ณ ์ ์๋ณ์, ํค๊ฐ ์์ต๋๋ค.
- ํค๋ฅผ ์
๋ ฅ ๋ฐ์ผ๋ฉด ํด์ ํจ์์ ๋ฐ๋ผ ์ด๋ ํ ์ธ๋ฑ์ค๋ก ๋ณํํฉ๋๋ค.
- ์ข์ ํด์ ํจ์๋ ํค๋ฅผ ์ต๋ํ ๊ณ ๋ฅด๊ฒ ๋ถํฌ์์ผ ์ธ๋ฑ์ค๊ฐ ๊ฒน์น์ง ์๋๋ก ์ถฉ๋์ ์ต์ํํด์ผ ํฉ๋๋ค.
- ํด์ ํจ์๋ฅผ ํตํด ๊ณ์ฐ๋ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๋ฒํท(๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก ์ ์ฅํ ์ฐฝ๊ณ )์ ํ์ธํ์ฌ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ต๋๋ค.

์๋ฅผ ๋ค์ด Sam Doe์ ์ ํ๋ฒํธ๋ฅผ ์ฐพ๊ณ ์ถ๋ค๋ฉด ํค์ Sam Doe๋ฅผ ๋ฃ์ต๋๋ค.
ํด์ ํจ์๊ฐ Sam Doe๋ฅผ 254๋ผ๋ ์ธ๋ฑ์ค๋ก ๋ณํํฉ๋๋ค.
์ด ์ธ๋ฑ์ค๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฒํท์ ์ดํด๋ณด๋ Sam Doe: 521-5030์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค.
ํค๊ฐ ๋งค์ฐ ๊ธด ๋ฌธ์์ด์ฒ๋ผ ํฐ ๋ฐ์ดํฐ์ธ ๊ฒฝ์ฐ์๋ ์ ํ๋ ๊ฐ์์ ๋ฒํท ์ธ๋ฑ์ค๋ก ๋ณํํ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ ํด์ ํจ์๋ ๋ฌดํ์ ๊ฐ๊น์ด ํค ๊ณต๊ฐ์ ์ ํํ ํฌ๊ธฐ์ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ก ์์ถํ์ฌ ๋งคํํ๊ณ
๋๋ถ์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋๋ผ๊ณ ๋ฐ์ดํฐ์ ์ฃผ์๋ฅผ ์ฐพ๋ ๊ณต๊ฐ(๋ฒํท ๋ฐฐ์ด) ์์ฒด๋ ์๊ฒ ์ ์ง๋ ์ ์์ด ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ํจ์จ์ ์ ๋๋ค.
์ถ๊ฐ ์ฐธ๊ณ ์๋ฃ
- ๊ทธ๋ํ(์๋ฃ๊ตฌ์กฐ) ์ํค
- [Data Structure] ์ด์ง ํธ๋ฆฌ(Binary Tree)์ ์ธ ๊ฐ์ง ์ข ๋ฅ์ ํน์ง
- ํ (์ต์ ํ, ์ต๋ ํ)
- [์๋ฃ๊ตฌ์กฐ] ํด์ํ ์ด๋ธ(HashTable)์ด๋?
'โ๏ธ CS > ๐ ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์๋ฃ๊ตฌ์กฐ] ์ ํ ์๋ฃ ๊ตฌ์กฐ (0) | 2025.10.02 |
|---|---|
| [์๊ณ ๋ฆฌ์ฆ] ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋ + Big O ํ๊ธฐ๋ฒ (0) | 2025.10.02 |
| [์๋ฃ๊ตฌ์กฐ][์๊ณ ๋ฆฌ์ฆ] Big O ํ๊ธฐ๋ฒ (1) | 2025.02.13 |
