[์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ ๊ณผ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ
1. ์๊ณ ๋ฆฌ์ฆ์ ์ ์์ ์กฐ๊ฑด
1) ์๊ณ ๋ฆฌ์ฆ์ ์ ์
์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ๋ช ๋ น์ด๋ค์ ๋จ๊ณ์ ๋์ด
2) ์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ฑด
์ ๋ ฅ : 0๊ฐ ์ด์์ ์ธ๋ถ ์ ๋ ฅ
์ถ๋ ฅ : 1๊ฐ ์ด์์ ์ถ๋ ฅ
๋ช ํ์ฑ : ๊ฐ ๋ช ๋ น์ ๋ชจํธํ์ง ์๊ณ ๋ช ํํด์ผ ํจ
์ ํ์ฑ : ํ์ ๋ ์์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๋ฐ๋์ ์ข ๋ฃ๋จ
์ ํจ์ฑ : ๋ชจ๋ ๋ช ๋ น์ ์ปดํจํฐ์์ ์ํ ๊ฐ๋ฅํด์ผ ํจ
์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ฑด์ ํฉ์ณ์ ์ ์ํ์๋ฉด ์๊ณ ๋ฆฌ์ฆ์ด๋ ์ฃผ์ด์ง ๋ฌธ์ ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ชจํธํ์ง ์๊ณ ์ปดํจํฐ๊ฐ ์ํ ๊ฐ๋ฅํ ์ผ๋ จ์ ์ ํ๊ฐ์ ๋ช ๋ น๋ค์ ์์์ ์ผ๋ก ๊ตฌ์ฑํ ๊ฒ์ด๋ค.
2. ์๊ณ ๋ฆฌ์ฆ ์์ฑ ๋จ๊ณ
3. ์๊ณ ๋ฆฌ์ฆ์ ํํ/๊ธฐ์ ๋ฐฉ๋ฒ
์๊ณ ๋ฆฌ์ฆ์ ํฌ๊ฒ ์ผ์ ์ธ์ด, ์์ฌ ์ฝ๋(Pseudo code), ์์๋์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํํํ ์ ์๋ค.
์์ฌ์ฝ๋(์๋์ฝ๋, pseudocode)๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ๊ฐ ๋ชจ๋์ด ์๋ํ๋ ๋ ผ๋ฆฌ๋ฅผ ํํํ๊ธฐ ์ํ ์ธ์ด์ด๋ค. ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ์ ๋ฐ๋ผ ์ฐ์ธ ๊ฒ์ด ์๋๋ผ, ์ผ๋ฐ์ ์ธ ์ธ์ด๋ก ์ฝ๋๋ฅผ ํ๋ด ๋ด์ด ์๊ณ ๋ฆฌ์ฆ์ ์จ๋์ ์ฝ๋๋ฅผ ๋งํ๋ค.
๋ค์์ '์ต๋๊ฐ ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ'์ ์ผ์ ์ธ์ด, ์์ฌ ์ฝ๋, ์์๋๋ก ํํํ ๊ฒ์ด๋ค.
4. ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ
์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ธ๋ ์ต์ํ ์์๋ฌ์ผ ํ๋ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถํ ๋๋ [๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ], [์คํ, ํ], [ํธ๋ฆฌ, ๊ทธ๋ํ]๋ฅผ ์์ผ๋ก ๋ฌถ์ด์ ํจ๊ป ๊ณต๋ถํ๋ฉด ์ข๋ค.
๊ฐ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ๋จํ ์์๋ณด์.
1) ๋ฐฐ์ด(Array)
- <index, value> ์์ผ๋ก ๊ตฌ์ฑ
- ๊ฐ ์์๋ค์ด ๋ชจ๋ ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ๋๋ค.
- ๊ฐ ์์์ ๋ฌผ๋ฆฌ์ ์์(๋ฉ๋ชจ๋ฆฌ ์ฃผ์)๊ฐ ๋ ผ๋ฆฌ์ ์์(์ธ๋ฑ์ค ๋ฒํธ)์ ๋์ผํ๋ค.
- ์ฒซ ๋ฒ์งธ ์์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ๋ค๋ฅธ ์์์ ์ฃผ์๋ฅผ ๊ณ์ฐํ ์ ์๋ค.
- [์ฅ์ ] ์ธ๋ฑ์ค๋ฅผ ํตํ ์ง์ ์ ๊ทผ ( = ์ด๋๋ก ์ ๊ทผํ๋ ์ ๊ทผ ์๊ฐ ๋์ผ)
- [๋จ์ ] ์ฝ์ /์ญ์ ์ ๋ง์ ์์ ๋ฐ์ดํฐ ์ด๋ ํ์
- 1์ฐจ์ ๋ฐฐ์ด, 2์ฐจ์ ๋ฐฐ์ด, 3์ฐจ์ ๋ฐฐ์ด, ... , n์ฐจ์ ๋ฐฐ์ด
2) ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)
- ๋ฐ์ดํฐ์ ๋งํฌ๋ฅผ ๊ฐ๋ ๋ ธ๋๋ก ๊ตฌ์ฑ๋จ
- ๋ ผ๋ฆฌ์ ์์์ ๋ฌผ๋ฆฌ์ ์์๊ฐ ๋์ผํ์ง ์์
- ๋ฐ์ดํฐ ์ฝ์ /์ญ์ ๊ฐ ์์ํ๋ค.
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ๋จ์ผ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ด์ค ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
3) ์คํ(Stack)
- ์ฝ์ /์ญ์ ๊ฐ ํ ์ชฝ์์๋ง ๋ฐ์
- LIFO(Last In First Out)
4) ํ(Queue)
- ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๋ค๋ฅธ ์ชฝ์์ ๋ฐ์
- FIFO(First In First Out)
5) ํธ๋ฆฌ(Tree)
ํ๋ ์ด์์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ์ ํ ์งํฉ T
- (์กฐ๊ฑด1) T์ ์์ ์ค ๋จ ํ๋์ ๋ฃจํธ ๋ ธ๋๊ฐ ์กด์ฌ
- (์กฐ๊ฑด2) ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ ธ๋๋ n๊ฐ(n≥0)์ ์๋ก ๋ถ๋ฆฌ๋ ๋ถ๋ถ์งํฉ T1, T2, ..., Tn(Ti : ์๋ธํธ๋ฆฌ)๋ก ๋๋์ด์ง๋ค.
๐ ์ฃผ์ ์ฉ์ด
- ์ด์ง ํธ๋ฆฌ(Binary Tree)
์ด์ง ํธ๋ฆฌ๋ ๊ฐ ๋ ธ๋์ degree(์ฐจ์)๊ฐ 2 ์ดํ์ธ ์์ ํธ๋ฆฌ๋ก ํธ๋ฆฌ ์ค ๊ฐ์ฅ ์ค์ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- ๊ฐ ๋ ธ๋์ degree(์ฐจ์)๊ฐ 2 ์ดํ์ธ ์์ ํธ๋ฆฌ
- ๋ ๋ฒจ i์์ ์ต๋ ๋ ธ๋ ๊ฐ์ = 2^i
- ๋์ด๊ฐ h์ธ ์ด์ง ํธ๋ฆฌ์ ์ต๋ ๋ ธ๋ ๊ฐ์ = 2^h-1
- Terminal(๋จ๋ง) ๋ ธ๋ ์ = degree(์ฐจ์)๊ฐ 2์ธ ๋ ธ๋ ์ + 1
6) ๊ทธ๋ํ(Graph)
- ๊ฐ๋ ฅํ ๋ชจ๋ธ๋ง ์๋จ์ผ๋ก์จ '๊ด๊ณ'๋ฅผ ๊ทธ๋ํ๋ก ์ถ์ํํ์ฌ ๋ค๋ฃฐ ์ ์๋ค.
- Vertex ์งํฉ V์ Edge ์งํฉ E์ ๋ํด ๊ทธ๋ํ G = (V, E)
๐ ์ฃผ์ ์ฉ์ด
References
ํ๊ตญ๋ฐฉ์กํต์ ๋ํ๊ต ์ปดํจํฐ๊ณผํ๊ณผ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์
๋๊ธ