์๋ฃ๊ตฌ์กฐ (Data Structure)๋? ๐งฌ
1. ์๋ฃ๊ตฌ์กฐ ์ ์
์๋ฃ๊ตฌ์กฐ(Data Structure)๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค. ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก
์กฐ์ํ ์ ์๋๋ก ๋ค์ํ ๋ฐฉ์์ผ๋ก ๊ตฌ์กฐํ๋๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ๊ณผ ์ง๊ฒฐ๋๋ค.
2. ์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ
์๋ฃ๊ตฌ์กฐ๋ ํฌ๊ฒ ์ ํ ๊ตฌ์กฐ์ ๋น์ ํ ๊ตฌ์กฐ๋ก ๋๋๋ค.
1๏ธโฃ ์ ํ ๊ตฌ์กฐ (Linear Data Structure)
๋ฐ์ดํฐ๊ฐ ์์ฐจ์ ์ผ๋ก ๋ฐฐ์น๋๋ ๊ตฌ์กฐ๋ก, ํ ๋ฒ์ ํ๋์ ๋ฐ์ดํฐ๋ง ์ง์ ์ ๊ทผํ ์ ์๋ค.
(1) ๋ฐฐ์ด (Array)
- ํน์ง: ๋์ผํ ๋ฐ์ดํฐ ํ์ ์ ์์๋ค์ด ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋จ
- ์ฅ์ : ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๋น ๋ฅธ ์กฐํ (O(1))
- ๋จ์ : ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ ์ด๋ฉฐ, ์ฝ์ /์ญ์ ๊ฐ ์ด๋ ค์ (O(n))
(2) ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Linked List)
- ํน์ง: ๊ฐ ๋ ธ๋(Node)๊ฐ ๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง
- ์ฅ์ : ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ฐ๋ฅ, ์ฝ์ /์ญ์ ๊ฐ ์ฉ์ด (O(1))
- ๋จ์ : ๊ฒ์์ด ๋๋ฆผ (O(n)), ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ(ํฌ์ธํฐ) ํ์
(3) ์คํ (Stack)
- ํน์ง: LIFO(Last In, First Out) ๋ฐฉ์์ผ๋ก ๋์ํ๋ ์๋ฃ๊ตฌ์กฐ
- ์ฐ์ฐ:
- `push()`: ๋ฐ์ดํฐ ์ฝ์
- `pop()`: ๋ฐ์ดํฐ ์ ๊ฑฐ
- `peek()`: ์ต์์ ์์ ํ์ธ
- ์ฌ์ฉ ์์: ํจ์ ํธ์ถ ์คํ, ์น ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ
(4) ํ (Queue)
- ํน์ง: FIFO(First In, First Out) ๋ฐฉ์์ผ๋ก ๋์ํ๋ ์๋ฃ๊ตฌ์กฐ
- ์ฐ์ฐ:
- `enqueue()`: ๋ฐ์ดํฐ ์ฝ์
- `dequeue()`: ๋ฐ์ดํฐ ์ ๊ฑฐ
- ์ฌ์ฉ ์์: ํ๋ก์ธ์ค ์ค์ผ์ค๋ง, ํ๋ฆฐํฐ ๋๊ธฐ์ด
(5) ๋ฑ (Deque, Double-ended Queue)
- ํน์ง: ์์ชฝ ๋์์ ์ฝ์ /์ญ์ ๊ฐ ๊ฐ๋ฅํ ํ
- ์ฌ์ฉ ์์: ์บ์(Cache), ์ฐ์ ์์ ํ
2๏ธโฃ ๋น์ ํ ๊ตฌ์กฐ (Non-Linear Data Structure)
๋ฐ์ดํฐ๊ฐ ๊ณ์ธต์ ๋๋ ๋ณต์กํ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ฉฐ, ์์ฐจ์ ์ผ๋ก ๋ฐฐ์น๋์ง ์๋ ๊ตฌ์กฐ์ด๋ค.
(1) ํธ๋ฆฌ (Tree)
- ํน์ง: ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ถ๋ชจ-์์ ๊ด๊ณ๊ฐ ์กด์ฌํจ
- ์ข
๋ฅ:
- ์ด์ง ํธ๋ฆฌ (Binary Tree)
- ์ด์ง ํ์ ํธ๋ฆฌ (BST, Binary Search Tree)
- AVL ํธ๋ฆฌ, ๋ ๋-๋ธ๋ ํธ๋ฆฌ
- ์ฌ์ฉ ์์: ํ์ผ ์์คํ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค(B+ ํธ๋ฆฌ)
(2) ๊ทธ๋ํ (Graph)
- ํน์ง: ์ ์ (Vertex)๊ณผ ๊ฐ์ (Edge)์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ
- ์ข
๋ฅ:
- ๋ฐฉํฅ ๊ทธ๋ํ(Directed Graph)
- ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ(Undirected Graph)
- ํ์ ์๊ณ ๋ฆฌ์ฆ:
- DFS(๊น์ด ์ฐ์ ํ์)
- BFS(๋๋น ์ฐ์ ํ์)
- ์ฌ์ฉ ์์: ๋คํธ์ํฌ, SNS ์น๊ตฌ ์ถ์ฒ
3. ์๋ฃ๊ตฌ์กฐ ์ ํ ๊ธฐ์ค
์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ํํ ๋๋ ์ฝ์ , ์ญ์ , ๊ฒ์ ์ฑ๋ฅ์ ๊ณ ๋ คํด์ผ ํ๋ค.
์๋ฃ๊ตฌ์กฐ | ์ฝ์ | ์ญ์ | ๊ฒ์ |
๋ฐฐ์ด(Array) | O(1) | O(n) | O(1) |
์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List) | O(1) | O(1) | O(n) |
์คํ(Stack) | O(1) | O(1) | O(n) |
ํ(Queue) | O(1) | O(1) | O(n) |
ํธ๋ฆฌ(Tree) | O(log n) | O(log n) | O(log n) |
ํด์ ํ ์ด๋ธ(Hash Table) | O(1) | O(1) | O(1) |
์๋ฃ๊ตฌ์กฐ ์ ๋ฆฌ:
โ ์๋ฃ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด๋ค~
โ ์ ํ ์๋ฃ๊ตฌ์กฐ์๋ ๋ฐฐ์ด, ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์คํ, ํ๊ฐ ์๋ค~
โ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ์๋ ํธ๋ฆฌ์ ๊ทธ๋ํ๊ฐ ์๋ค~
โ ์๋ฃ๊ตฌ์กฐ ์ ํ ์ ์ฝ์ , ์ญ์ , ๊ฒ์ ์ฑ๋ฅ์ ๊ณ ๋ คํด์ผ ํ๋ค~
โ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ํด ์ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํ๋ค~
'Algorithm ๐ > ๊ฐ๋ ์ ๋ฆฌ ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[250227] ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด (1) | 2025.02.27 |
---|---|
[250206] Algorithm ๊ฐ๋จํ ์์๋ณด๊ธฐ~ (0) | 2025.02.06 |