๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐœ๋…๊ณผ ๊ธฐ๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ

by Leica 2020. 3. 10.
๋ฐ˜์‘ํ˜•

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐœ๋…๊ณผ ๊ธฐ๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ

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

ํ•œ๊ตญ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€