2.1 Big O
ํ๊ธฐ๋ฒ์ ์ ์.
Big O
ํ๊ธฐ๋ฒ์ ์ํ์ ํ๊ธฐ๋ฒ์ด์ผ. ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด๋ ์์ ์๋น๊ฐ ์
๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ฐ๋๋์ง๋ฅผ ์ค๋ช
ํ๋ ๋ฐ ์ฌ์ฉ๋ผ. ์ด๋
์๊ณ ๋ฆฌ์ฆ์ ํ์ฅ์ฑ๊ณผ ๋ฐ์ดํฐ ์์ด ๋์ด๋ ๋ ์ฑ๋ฅ์ด ์ด๋ป๊ฒ ๋ณํ๋์ง๋ฅผ ์ธก์ ํ๋
๋ฐ ๋์์ ์ค.
Big O
๋ ์์์ ๋ ์ค์ํ ๊ตฌ์ฑ ์์๋ฅผ ๋ฌด์ํ๋ฉด์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ์ง์คํ์ฌ ์ฅ๊ธฐ์ ์ธ ๋์์ ๋ถ์ํ๋ ๋ฐ ์ค์ ์ ๋์ง.
๊ธฐ๋ณธ ํ๊ธฐ๋ฒ:
O(1)
โ ์์ ๋ณต์ก๋:
- ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ์ด ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ์ํฅ๋ฐ์ง ์์.
- ์: ๋ฐฐ์ด ์์๋ฅผ ์ธ๋ฑ์ค๋ก ์ ๊ทผ.
O(n)
โ ์ ํ ๋ณต์ก๋:
- ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ์ด ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ๋ณํด.
- ์: ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๊ฐ๋จํ ์ํ.
O(log n)
โ ๋ก๊ทธ ๋ณต์ก๋:
- ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ์ด ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ ์ฆ๊ฐ์ ๋ฐ๋ผ ๋ก๊ทธ ๋จ์๋ก ๋์ด๋.
- ์: ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ์ด์ง ํ์.
O(n^2)
โ ์ด์ฐจ ๋ณต์ก๋:
- ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ์ด ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ๊ณฑ์ผ๋ก ์ฆ๊ฐํด.
- ์: ๋ฒ๋ธ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ.
O(2^n)
โ ์ง์ ๋ณต์ก๋:
- ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ์ด ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ง์ ๋จ์๋ก ๋์ด๋.
- ์: ์์ ํ์์ผ๋ก ๋ฐฐ๋ญ ๋ฌธ์ ํด๊ฒฐ.
2.2 Big O
ํ๊ธฐ๋ฒ์ ํด์.
Big O
ํ๊ธฐ๋ฒ์ ์ด๋ป๊ฒ ํด์ํ๊ณ ์ฌ์ฉํ ๊น?
์์์ ๋ ์ค์ํ ๊ตฌ์ฑ ์์ ๋ฌด์:
Big O
๋ ํจ์์ ์ฑ์ฅ ์์์ ์ค๋ช
ํ๋ฉฐ, ์์์ ๋ ์ค์ํ ๊ตฌ์ฑ ์์๋ฅผ ๋ฌด์ํด. ์๋ฅผ ๋ค์ด, O(2n)
๊ณผ O(3n)
์ O(n)
์ผ๋ก ํด์๋ผ.
์๊ณ ๋ฆฌ์ฆ ๋น๊ต:
Big O
๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ๋น๋์นญ ํจ์จ์ฑ์ผ๋ก ๋น๊ตํ ์ ์์ด. ์๋ฅผ ๋ค์ด, O(n log n)
์๊ณ ๋ฆฌ์ฆ์ ํฐ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ O(n^2)
์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋ ํจ์จ์ ์ด์ผ.
์ต์ ์ ๊ฒฝ์ฐ ๋ถ์:
Big O
๋ ๋ณดํต ์๊ณ ๋ฆฌ์ฆ์ ์ต์
์ ๊ฒฝ์ฐ ์คํ ์๊ฐ์ ๋ถ์ํ๋ ๋ฐ ์ฌ์ฉ๋ผ, ์ต๋ ๋ณต์ก์ฑ์ ํ๊ฐํ ์ ์๊ฒ ํด์ฃผ์ง.
์์ ๋ฌด์.
์์์ ๋ ์ค์ํ ๊ตฌ์ฑ ์์ ๋ฌด์
์์ 1:
๋ ํจ์๋ฅผ ๊ณ ๋ คํด๋ณด์:
- f(n) = 3n + 2
- g(n) = 5n + 1
๋ ํจ์ ๋ชจ๋ ์ ํ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ, ๊ฐ ํจ์์ ์ง๋ฐฐ์ ์ธ ํญ์ n
์ด๋๊น. ๋ฐ๋ผ์ ๋ ํจ์๋ ์์์ ์ถ๊ฐ ํญ์ ์ฐจ์ด์๋ ๋ถ๊ตฌํ๊ณ O(n)
์ผ๋ก ํด์๋ผ.
์์ 2:
๋ ํจ์๋ฅผ ๊ณ ๋ คํด๋ณด์:
- f(n) = n^2 + 3n + 4
- g(n) = 2n^2 + n
๋ ํจ์ ๋ชจ๋ ์ด์ฐจ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ, ์ง๋ฐฐ์ ์ธ ํญ์ n^2
์ด๋๊น. ๋ ํํ์ ๋ชจ๋ ๋ค๋ฅธ ํญ๊ณผ ๊ณ์์ ์ฐจ์ด์๋ ๋ถ๊ตฌํ๊ณ O(n^2)
์ผ๋ก ํด์๋ผ.
2.3. ์๊ณ ๋ฆฌ์ฆ ๋น๊ต
1. ๋งค์ฐ ํฐ ๋ฐ์ดํฐ ์์ธ์ค์์์ ์๊ณ ๋ฆฌ์ฆ ๋น๊ต
์์ 1:
- ์๊ณ ๋ฆฌ์ฆ
A
๋O(n^2)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ. - ์๊ณ ๋ฆฌ์ฆ
B
๋O(n log n)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ.
์์ n
๊ฐ์์๋ ์๊ณ ๋ฆฌ์ฆ A๊ฐ ์์ ๋๋ฌธ์ด๋ผ๋ ๋ ๋น ๋ฅผ ์ ์์ง๋ง, ํฐ n
๊ฐ์์๋ ์๊ณ ๋ฆฌ์ฆ B๊ฐ ํจ์ฌ ๋น ๋ฅด๊ฒ ๋์ง, ๋ก๊ทธ ์ฑ์ฅ์ด๋๊น, ์ด์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ์ง ์์์.
์์ 2:
- ์๊ณ ๋ฆฌ์ฆ
X
๋O(n)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ. - ์๊ณ ๋ฆฌ์ฆ
Y
๋O(1)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ.
์๊ณ ๋ฆฌ์ฆ Y
๋ ํญ์ ๋ ๋น ๋ฅด๊ฒ ์ง, ์
๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์ด๋ค์ง์ ์๊ด์์ด, O(1)
์ด๋ ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ์ด ์
๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค๋ ๋ป์ด๋๊น.
2. ์ต์ ์ ๊ฒฝ์ฐ ๋ถ์
์์ 1:
๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ต์
์ ๊ฒฝ์ฐ O(n^2)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ, ๋ฐฐ์ด์ด ์ญ์์ผ๋ก ์ ๋ ฌ๋ ๊ฒฝ์ฐ ๋ง์ด์ผ. ์ด๋ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ๋ค๋ฅธ ๋ชจ๋ ์์์ ๋น๊ตํ๋ฉฐ, ํ์ํ๋ค๋ฉด ๊ตํํด์ผ ํ๋ค๋ ์๋ฏธ์ง.
์์ 2:
์ด์ง ํ์์ ์ต์
์ ๊ฒฝ์ฐ์๋ O(log n)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ธ. ์ด๋ ์ต์
์ ๊ฒฝ์ฐ์๋ ์์๋ฅผ ์ฐพ๋ ๋ฐ ํ์ํ ๋จ๊ณ ์๊ฐ ๋ฐฐ์ด ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๋ป์ด๋๊น, ์์ฃผ ํจ์จ์ ์ด์ง.
3. ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๋ํ ์ํฅ
์์ 1:
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ๊ฐ ์๋ค๋ฉด, ํ๋๋ O(n^2)
์ ์๊ฐ ๋ณต์ก๋, ๋ ๋ค๋ฅธ ํ๋๋ O(n log n)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ๋, ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ 1000๊ฐ์์ 10,000๊ฐ๋ก ์ฆ๊ฐ์ํค๋ฉด ์ฑ๋ฅ ์ฐจ์ด๊ฐ ๋๋ ทํ๊ฒ ๋ํ๋.
-
O(n^2)
์๊ณ ๋ฆฌ์ฆ์ 10,000๊ฐ ์์์ ๋ํด ๋๋ต 100,000,000๋ฒ์ ์ฐ์ฐ์ ์ํํ ๊ฑฐ์ผ. -
O(n log n)
์๊ณ ๋ฆฌ์ฆ์ 10,000๊ฐ ์์์ ๋ํด ์ฝ 40,000๋ฒ์ ์ฐ์ฐ์ ์ํํ ๊ฑฐ์ผ.
์์ 2:
O(2^n)
๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํด ๋ณด์. ์
๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ 10์์ 20 ์์๋ก ์ฆ๊ฐ์ํค๋ฉด ์ฐ์ฐ ์๊ฐ ์ง์ ๋จ์๋ก ์ฆ๊ฐํด.
- n = 10: 2^10 = 1024 ์ฐ์ฐ.
- n = 20: 2^20 = 1,048,576 ์ฐ์ฐ.
์ด๋ ์ง์ ๋ณต์ก๋๊ฐ ํฐ n ๊ฐ์์๋ ์คํ ๊ฐ๋ฅ์ฑ์ ๋น ๋ฅด๊ฒ ๋์ด์๋ฒ๋ฆฌ๊ฒ ๋๋ ๊ฑธ ๋ณด์ฌ์ฃผ์ง.
GO TO FULL VERSION