2019. 6. 28. 08:02ใPROGRAMMING/์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ
์๋ฃ๊ตฌ์กฐ๋ ๋ฌด์์ธ๊ฐ?
์๋ฃ๊ตฌ์กฐ : ๋ฐ์ดํฐ์ ํํ(๋ฐ์ดํฐ์ ์ ์ฅ) ๋ฐฉ๋ฒ
ex) int, float, vector, list, map, ์ ์ ๋ฐฐ์ด, ๋์ ๋ฐฐ์ด ๋ฑ๋ฑ
์๊ณ ๋ฆฌ์ฆ : ์๋ฃ๊ตฌ์กฐ๋ก ํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋์์ผ๋ก ํ๋ '๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ'
[ ์๋ฃ๊ตฌ์กฐ์ ๋ถ๋ฅ ]
์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ๋ถ์ ๋ฐฉ๋ฒ
[ ์๊ฐ ๋ณต์ก๋ (Time Complexity)์ ๊ณต๊ฐ ๋ณต์ก๋ (Space Complexity) ]
์๊ฐ ๋ณต์ก๋ (Main)
"์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ ํ ์ํฉ์์ ๋ ๋น ๋ฅด๊ณ ๋ ๋๋ฆฐ๊ฐ?"
๊ณต๊ฐ ๋ณต์ก๋ (Sub)
"์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ ํ ์ํฉ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ ๊ฒ ์ฐ๊ณ ๋ง์ด ์ฐ๋?"
์๊ณ ๋ฆฌ์ฆ์ ์ํ์๋๋ฅผ ํ๊ฐํ ๋๋ ์ฐ์ฐ์ ํ์๋ฅผ ์ธ๋ ๋ฐฉ๋ฒ์ ์ทจํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ์ ์๊ฐ n์ ๋ํ ์ฐ์ฐํ์์ ํจ์ T(n)์ ๊ตฌ์ฑํ๋ค.
๋ฐ์ดํฐ์ ์๊ฐ ์ ์ ๊ฒฝ์ฐ์ ์ํ ์๋๋ ํฐ ์๋ฏธ๊ฐ ์๋ค.
๋ฐ์ดํฐ์ ์์ ๋ฐ๋ฅธ ์ํ ์๋์ ๋ณํ ์ ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ค.
๋ฐ์ดํฐ์ ์์ ์ ์ ๊ฒฝ์ฐ์๋ A์๊ณ ๋ฆฌ์ฆ์ด ๋ ๋น ๋ฅด์ง๋ง,
๋ฐ์ดํฐ์ ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋ง์์ง ๊ฒฝ์ฐ B ์๊ณ ๋ฆฌ์ฆ์ด ํจ์ฌ ๋ ๋นจ๋ผ์ง๋ค.
์ํ ์๋์ ๋ณํ ์ ๋๋ฅผ ๋ดค์ ๋, B ์๊ณ ๋ฆฌ์ฆ์ด ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ ํ ์ ์๊ฒ ๋ค.
๋น -์ค ํ๊ธฐ๋ฒ (Big - Oh Notation)
T(n)์์ ์ค์ ๋ก ์ํฅ๋ ฅ์ ๋ผ์น๋ ๋ถ๋ถ๋ง์ ๋ฐ์ง๋ ๊ฒ.
T(n) = n^2 + 2n + 1
n์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ 2n + 1์ด ๋ฏธ์น๋ ์ํฅ์ ๋ฏธ๋ฏธํด์ง๋ฏ๋ก
๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋ตํ ํ ์ ์๋ค.
T(n) = n^2
O(n^2)
T(n) = n^2 + 2n + 1์ ๋น ์ค๋ n^2์ด๋ฉฐ,
์ด๋ n์ ์ฆ๊ฐ ๋ฐ ๊ฐ์์ ๋ฐ๋ฅธ T(n)์ ๋ณํ ์ ๋๊ฐ n^2์ ํํ๋ฅผ ๋์ ์๋ฏธํ๋ค.
T(n) = n^2 + 2n + 9 -> O(n^2)
T(n) = n^4 + n^3 + n^2 + 1 -> O(n^4)
T(n) = 5n^3 + 2n + 1 -> O(n^3)
"T(n)์ด ๋คํญ์์ผ๋ก ํํ๋ ๊ฒฝ์ฐ, ์ต๊ณ ์ฐจํญ์ ์ฐจ์๊ฐ ๋น -์ค๊ฐ ๋๋ค"
[ ๋ํ์ ์ธ ๋น -์ค ]
1. O(l)
์์ํ ๋น -์ค.
์ฐ์ฐํ์๊ฐ ๊ณ ์ ์ธ ์ ํ์ ์๊ณ ๋ฆฌ์ฆ.
2. O(log n)
๋ก๊ทธํ ๋น -์ค.
'๋ฐ์ดํฐ ์์ ์ฆ๊ฐ์จ'์ ๋นํด์ '์ฐ์ฐํ์์ ์ฆ๊ฐ์จ'์ด ํจ์ฌ ๋ฎ์ ์๊ณ ๋ฆฌ์ฆ.
3. O(n)
์ ํ ๋น -์ค.
๋ฐ์ดํฐ์ ์์ ์ฐ์ฐํ์๊ฐ ๋น๋กํ๋ ์๊ณ ๋ฆฌ์ฆ.
4. O(n^2)
๋ฐ์ดํฐ ์์ ์ ๊ณฑ์ ํด๋นํ๋ ์ฐ์ฐํ์๋ฅผ ์๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ.
์ด์ค ๋ฐ๋ณต๋ฌธ ๋ด์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ด๋ จ๋ ์ฐ์ฐ์ด ์งํ๋๋ ๊ฒฝ์ฐ ๋ฐ์.
์ฆ, ์ค์ฒฉ๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉ์ ์๊ณ ๋ฆฌ์ฆ ๋์์ธ์์ ๋ฐ๋์งํ์ง ๋ชปํจ.
5. O(n^3)
๋ฐ์ดํฐ ์์ ์ธ ์ ๊ณฑ์ ํด๋นํ๋ ์ฐ์ฐํ์๋ฅผ ์๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ.
์ผ์ค ์ค์ฒฉ๋ ๋ฐ๋ณต๋ฌธ ๋ด์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ด๋ จ๋ ์ฐ์ฐ์ด ์งํ๋๋ ๊ฒฝ์ฐ.
์ ์ฉํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์๋ ์๊ณ ๋ฆฌ์ฆ.
์ฑ๋ฅ ํ๊ฐ(์ํ์๊ฐ, ์ฐ์ฐํ์)๋ฅผ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
O(I) < O(log n) < O(n) < O(n log n) < O(n^2) < O(n^3)
(๋ก๊ทธํ ๋น -์ค๊ฐ ์ฑ๋ฅ์ด ์ข์ ์๊ณ ๋ฆฌ์ฆ)