9.1 ๋ฐฐ์ด, ๋ฆฌ์คํธ, ํด์ ํ ์ด๋ธ์ ๋ณต์ก๋.
๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ณต์ก๋ ๋ถ์์ ๋ค์ํ ์ฐ์ฐ(์: ์ฝ์ , ์ญ์ , ํ์)์ ์ํํ๋ ๋ฐ ํ์ํ ์คํ ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์์ ํ๊ฐํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ๋ณต์ก์ฑ์ ์ดํดํ๋ฉด ๊ฐ๋ฐ์๊ฐ ํน์ ์์ ์ ๊ฐ์ฅ ์ ํฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ฌ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
1. ๋ฐฐ์ด (Arrays)
:
- ์ธ๋ฑ์ค ์ ๊ทผ:
O(1)
- ์์ ํ์:
O(n)
-
์์ ์ฝ์
:
O(n)
(์ต์ ์ ๊ฒฝ์ฐ, ๋ฐฐ์ด ์ค๊ฐ์ ์ฝ์ ) -
์์ ์ญ์ :
O(n)
(์ต์ ์ ๊ฒฝ์ฐ, ๋ฐฐ์ด ์ค๊ฐ์์ ์ญ์ ) - ๋ฉ๋ชจ๋ฆฌ:
O(n)
์ฌ์ฉ ์์: ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ๋น ๋ฅด๊ฒ ์ ๊ทผํด์ผ ํ๋ ์๋๋ฆฌ์ค, ์๋ฅผ ๋ค์ด ํ ์ด๋ธ์ด๋ ์๊ฐ๋๋ณ ๋ฐ์ดํฐ์ ํจ๊ณผ์ ์ ๋๋ค.
2. ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Linked Lists):
- ์ธ๋ฑ์ค ์ ๊ทผ:
O(n)
- ์์ ํ์:
O(n)
- ์์ ์ฝ์
:
O(1)
(์์น๊ฐ ์๋ ค์ง ๊ฒฝ์ฐ) - ์์ ์ญ์ :
O(1)
(์์น๊ฐ ์๋ ค์ง ๊ฒฝ์ฐ) - ๋ฉ๋ชจ๋ฆฌ:
O(n)
์ฌ์ฉ ์์: ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์์๋ฅผ ์์ฃผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํด์ผ ํ ๋ ์ ์ฉํ๋ฉฐ, ํ๋ ์คํ ๊ตฌํ์ ์ฌ์ฉ๋ฉ๋๋ค.
3. ํด์ ํ ์ด๋ธ (Hash Tables):
- ์์ ํ์:
O(1)
(ํ๊ท ์ ์ธ ๊ฒฝ์ฐ) - ์์ ์ฝ์
:
O(1)
(ํ๊ท ์ ์ธ ๊ฒฝ์ฐ) - ์์ ์ญ์ :
O(1)
(ํ๊ท ์ ์ธ ๊ฒฝ์ฐ) - ๋ฉ๋ชจ๋ฆฌ:
O(n)
์ฌ์ฉ ์์: ํด์ ํ ์ด๋ธ์ dictionaries๋ ํค-๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค.
9.2 ํธ๋ฆฌ์ ๊ทธ๋ํ์ ๋ณต์ก๋.
1. ์ด์ง ํ์ ํธ๋ฆฌ (Binary Search Trees, BST):
- ์์ ํ์:
O(log n)
(ํ๊ท ์ ์ธ ๊ฒฝ์ฐ) - ์์ ์ฝ์
:
O(log n)
(ํ๊ท ์ ์ธ ๊ฒฝ์ฐ) - ์์ ์ญ์ :
O(log n)
(ํ๊ท ์ ์ธ ๊ฒฝ์ฐ) - ๋ฉ๋ชจ๋ฆฌ:
O(n)
์ฌ์ฉ ์์: ์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์งํฉ(set), ๋งต(map)๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ์ฌ์ฉ๋ฉ๋๋ค.
2. ๊ทธ๋ํ (Graphs):
- BFS (๋๋น ์ฐ์ ํ์):
O(V + E)
- DFS (๊น์ด ์ฐ์ ํ์):
O(V + E)
-
์ต๋จ ๊ฒฝ๋ก (Dijkstra):
O(V^2)
๋๋O(E + V log V)
(์ธ์ ๋ฆฌ์คํธ์ผ ๊ฒฝ์ฐ) - ๋ฉ๋ชจ๋ฆฌ:
O(V + E)
์ฌ์ฉ ์์: ๊ทธ๋ํ๋ ๋คํธ์ํฌ ๋ผ์ฐํ , ์์ ๋คํธ์ํฌ, ์ฐ๊ฒฐ ๋ถ์ ๋ฐ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋ฉ๋๋ค.
9.3 ์ ํฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ํํ๊ธฐ
๋ณต์ก๋ ๋ถ์์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ์ ํํ ๊น์?
๋ฌธ์ ์ ํน์ฑ:
์ด๋ค ์ฐ์ฐ์ด ๊ฐ์ฅ ๋น๋ฒํ๊ณ ์ค์ํ์ง (ํ์, ์ฝ์ , ์ญ์ ) ํ์ ํฉ๋๋ค.
๋ฐ์ดํฐ ํฌ๊ธฐ:
๋ฐ์ดํฐ ํฌ๊ธฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ๊ณ ๋ คํฉ๋๋ค. ์์ ๋ฐ์ดํฐ์ ๋ํด์๋ ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ์ ๊ฐ๋จํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฑ๋ฅ ์๊ตฌ์ฌํญ:
ํน์ ์์ ์ ๋ ์ค์ํ ๊ฒ์ด ์คํ ์๊ฐ์ธ์ง ๋ฉ๋ชจ๋ฆฌ ์๋น์ธ์ง ๊ฒฐ์ ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์๊ตฌ:
๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋ ๊ฒฝ์ฐ, ๊ณต๊ฐ ๋ณต์ก๋๊ฐ ๋ฎ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํํฉ๋๋ค.
์๊ฐ ๋ฐ ๊ณต๊ฐ ๋ณต์ก์ฑ์ ๊ณ ๋ คํ ์ค์ ๋ฌธ์ ์ต์ ํ ์์
์ ์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ฌ์ฉ:
์์: ๋น๋ฒํ ๊ฒ์ ์์ ์๋ ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ๊ณ , ๋น๋ฒํ ์ฝ์ /์ญ์ ์์ ์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์ ์ ์ค์ด๊ธฐ:
์์: ๋ฃจํ ์ต์ ํ ๋ฐ ๋ถํ์ํ ๊ณ์ฐ์ ๋ฐฐ์ , ๋ฉ๋ชจ์ด์ ์ด์ ๋ฐ ๋์ ํ๋ก๊ทธ๋๋ฐ ์ฌ์ฉ.
๋ณ๋ ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ:
์์: ํฐ ๋ฐ์ดํฐ ์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฉํฐ์ค๋ ๋ฉ ๋๋ ๋ถ์ฐ ์์คํ ์ฌ์ฉ.
9.4 ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ถ์์ ์ํ ์ค๋น๋ ๊ณผ์ ์์.
์ค์ ๋ฌธ์ ์ ๋ถ์ ๋ฐ ์ต์ ํ๋ฅผ ์ํ ์ค์ต ๊ณผ์
๊ณผ์ 1: ๋ฐฐ์ด ๋ด ๊ฒ์ ์ต์ ํ
์ฌ๋ฌ๋ถ์๊ฒ๋ 1000๋ง ๊ฐ์ ์ซ์๊ฐ ์๋ ๋ฐฐ์ด์ด ์์ต๋๋ค. ์์๋ฅผ ๊ฒ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํํ์ธ์.
ํด๊ฒฐ์:
์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ํด ์ด์ง ๊ฒ์์ ์ฌ์ฉํ์ธ์.
๊ณผ์ 2: ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์์ ์ต์ ํ
์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ์์ผ๋ฉฐ ์์๋ฅผ ์์ฃผ ์ฝ์ ํ๊ณ ์ญ์ ํด์ผ ํฉ๋๋ค.
ํด๊ฒฐ์:
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ์ ๋ฐ ์ญ์ ๋ฅผ ์ต์ ํํ์ธ์.
๊ณผ์ 3: ํด์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
๋น ๋ฅธ ๋ฐ์ดํฐ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ฌ์ ์ ๊ตฌํํ์ธ์.
ํด๊ฒฐ์:
O(1)
์๊ฐ ๋ณต์ก๋๋ก ์ฝ์
, ์ญ์ ๋ฐ ๊ฒ์ ์์
์ ์ํด ํด์ ํ
์ด๋ธ์ ์ฌ์ฉํ์ธ์.
๊ณผ์ 4: ๊ทธ๋ํ ์ํ
๋์ ๋๋ก์ ๊ทธ๋ํ์์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ผ์ธ์.
ํด๊ฒฐ์:
์ธ์ ํ๋ ฌ์์๋ O(V^2)
๋ณต์ก๋๋ก, ์ธ์ ๋ฆฌ์คํธ์์๋ O(E + V log V)
๋ณต์ก๋๋ก ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ธ์.
GO TO FULL VERSION