2024 03 25
๊ธ ๋ด์ฉ ์ถ์ฒ : ํ์์ฌ์ด๋ฒ๋ํ๊ต ์๊ณ ๋ฆฌ์ฆ ์์
1. ์๋ฃ๊ตฌ์กฐ
- ์๋ฃ(data)๋ฅผ ๋ด๋ ๊ตฌ์กฐ
- ์ ๊ทผ ๋ฐ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์๋ฃ์ ์กฐ์ง, ๊ด๋ฆฌ, ์ ์ฅ
- ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ
- ์ฝ๋ ์์์ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐ์ดํฐ ํน์ฑ์ ๋ฐ๋ผ ์ฒด๊ณ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํด์ผ ํจ
2. ์๊ณ ๋ฆฌ์ฆ
- ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ ์ฐจ
- ๋ฌธ์ ๋ฅผ ํ์ด๋ด๊ธฐ ์ํด ์ ํด์ง ์ผ๋ จ์ ์ ์ฐจ๋ ๋ฐฉ๋ฒ์ ๊ณต์ํํ ํํ๋ก ํํํ ๊ฒ
3. ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธํ
์์ฐจ๊ตฌ์กฐ | ์ฒ์๋ถํฐ ์์๋๋ก ์ฒ๋ฆฌํจ | ![]() |
์ ํ๊ตฌ์กฐ | ์กฐ๊ฑด์์ผ๋ก ํ๋จํ์ฌ ์คํํ ์ฒ๋ฆฌ๋ฅผ ์ ํํจ | ![]() |
๋ฐ๋ณต๊ตฌ์กฐ | ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋์ ๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ณตํจ | ![]() |
3-1. ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธํ - ์์ฐจ๊ตฌ์กฐ
- ์ฒ์๋ถํฐ ์์๋๋ก ์ฒ๋ฆฌํจ
- ์ํ๋ ์ฒ๋ฆฌ๋ฅผ ์ฐจ๋ก๋ก ์์ฑ
3-2. ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธํ - ์ ํ๊ตฌ์กฐ
- ์กฐ๊ฑด์์ผ๋ก ํ๋จํ์ฌ ์คํํ ์ฒ๋ฆฌ๋ฅผ ์ ํํ๋ ๊ฒ
- ์์ํ์ง ๋ชปํ ์ํฉ์ ๊ฐ์ ํ์ฌ ์ด๋ฅผ ํํผํ ์ ์๋๋ก ํจ
- ์ ํ ๊ตฌ์กฐ์ ์์ด์ ์กฐ๊ฑด ํ๋จ์ ์คํํ๋ ์์ '์กฐ๊ฑด์'์ด๋ผ ํจ
3-3. ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธํ - ๋ฐ๋ณต๊ตฌ์กฐ
4. ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ ๋ฐฉ๋ฒ
์์๋ | ๋ํ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์ ํจ |
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด | ์ฌ๋ฌ ์ข ๋ฅ์ ์ธ์ด๋ก ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ |
์์ฌ ์ฝ๋(pseudo code) | ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์์กดํ์ง ์๊ณ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์ ํ ์ ์์ |
4-1. ์์๋
![]() |
ํฐ๋ฏธ๋ |
|
![]() |
์ฒ๋ฆฌ๊ธฐํธ |
|
![]() |
ํ๋จ๊ธฐํธ |
|
![]() |
๋ฃจํ๊ธฐํธ(์์) |
|
![]() |
๋ฃจํ๊ธฐํธ(์ข ๋ฃ) |
|
![]() |
ํ๋ฆ์ |
|
์์ฌ์ฝ๋๋ ๋ค์์ ๋ฐ๋ก,
5. ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ดํด
์๋ฃ๊ตฌ์กฐ |
|
์๊ณ ๋ฆฌ์ฆ |
|
6. ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋ ๋ถ์
- ์ง์ ๊ตฌํํ์ง ์๊ณ ์๋ ์ฒ๋ฆฌ ์๊ฐ์ ๋ถ์ํ ์ ์์
- ์๊ณ ๋ฆฌ์ฆ์ด ์ํํ๋ ์ฐ์ฐ์ ํ์๋ฅผ ์ธก์ ํ์ฌ ๋น๊ตํจ
- ์ฐ์ฐ์ ํ์๋ n์ ํจ์
์๊ฐ ๋ณต์ก๋ ๋ถ์(Time Complexity) | ์ฒ๋ฆฌ ์๊ฐ ๋ถ์ |
๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์(Space Complexity) | ์ฒ๋ฆฌ ์ ํ์๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ถ์ |
- ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์์ ์ฐ์ฐ๋ค์ด ๋ช ๋ฒ ์ํ๋๋์ง๋ฅผ ์ซ์๋ก ํ์
- ์๊ณ ๋ฆฌ์ฆ์ด ์ํํ๋ ์ฐ์ฐ์ ๊ฐ์๋ฅผ ๊ณ์ฐํ์ฌ ๋ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋น๊ต
- ์ฐ์ฐ์ ์ํ ํ์๋ ์ ๋ ฅ์ ๊ฐ์ n์ ๋ํ ํจ์ T(n)์ผ๋ก ํ๊ธฐํจ ( T๋ Time )
7. ๋น ์ค(Big-oh) ํ๊ธฐ๋ฒ
- ์ฐ์ฐ ํ์๋ก ์ธก์ ํ๋ ํ๊ธฐ๋ฒ
- ์ ๋ ฅ ํฌ๊ธฐ n์ ๋ํด ๊ณ์ฐ ํ์๊ฐ ์ด๋ ์ ๋์ธ์ง๋ฅผ ํํํจ
- ์ ๊ทผ ํ๊ธฐ๋ฒ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ์ ๋๋ต์ ์ผ๋ก ๋ํ๋
์์
O(1) | input n์ ๋ํด ๊ณ์ฐ ํ์๊ฐ ์ผ์ ํจ |
O(n) | input n์ ๋ํด n๊ณผ ๊ณ์ฐ ํ์๊ฐ ๋น๋กํจ |
O(n2) | input n์ ๋ํด ๊ณ์ฐ ํ์๊ฐ ์ ๊ณฑ์ผ๋ก ์ฆ๊ฐํจ |
O(1) | ์์ํ | O(log n) | ๋ก๊ทธํ |
O(n) | ์ ํ | O(n log n) | ๋ก๊ทธ์ ํ |
O(n2) | 2์ฐจํ | O(n3) | 3์ฐจํ |
O(2n) | ์ง์ํ | O(n!) | ํฉํ ๋ฆฌ์ผํ |
O(nk) | k์ฐจํ |
7-1. ๋น ์ค ํ๊ธฐ๋ฒ - ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์๊ฐ ๋ณต์ก๋
์๊ฐ ๋ณต์ก๋ | ์๊ณ ๋ฆฌ์ฆ | n=32 |
O(1) | ํด์ ํ ์ด๋ธ(์ ๋ ฅ ํฌ๊ธฐ์ ์๊ด์์ด ์ผ์ ํ ์๊ฐ) | 1 |
O(log2n) | ์ด์ ํ์(๋ก๊ทธ ์๊ฐ ์ํ ์๊ฐ ์ฆ๊ฐ) | 5 |
O(n) | ์์ฐจ ํ์(์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋ก์ ์ธ ์ํ ์๊ฐ ์ฆ๊ฐ) | 32 |
O(n log2 n) | ํต ์ ๋ ฌ(O(n)๋ณด๋ค๋ ์ํ์๊ฐ์ด ํจ์ฌ ๊ธธ์ง๋ง O(n2)๋ณด๋ค๋ ํจ์ฌ ์์) | 160 |
O(n2) | ์ ํ ์ ๋ ฌ(๋ for๊ฐ ์ค์ฒฉ๋์ด ๊ตฌํ) | 1,024 |
O(n3) | N์ 3์ ๊ณฑ์ผ๋ก ์ํ ์๊ฐ ์ฆ๊ฐ | 32,768 |