๋ค์ด๊ฐ๋ฉฐ
- ์ต๊ทผ ํผ์์ ์ค๋นํ๋ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๊ฐ ์๊ฐ ๋๋น ์ง์ค์ด ์์๋๊ณ ์ ์ ๋์ด ์ง๊ณ ์์๋ค. ๋ง์นจ, ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋์์ ๋ชจ์งํ๋ ๊ธ์ด ๋์ ๋ค์ด์๊ณ , ์ฃผ์ ์์ด ์ ์ฒญํ์๋๋ฐ ๋ฉค๋ฒ๊ฐ ๋์๋ค. (์๋ง ๋ฌธ๋ซ๊ณ ๋ค์ด์จ ๋ฉค๋ฒ๊ฐ ์๋๊น ํ๋ค)
- ์คํฐ๋๋ ์ต๊ทผ ์ถ๊ฐ๋ ์ฑ
์ฝ๋ฉํ ์คํธ ํฉ๊ฒฉ์๋๊ธฐ
์ ์ถํ์ฌ ๊ณจ๋ ๋๋น์์ ์คํฐ๋ ์ฅ์ ๋ชจ์งํ์ฌ ์ด์์ด ๋๋ ๋ฏ ํ๋ค. ์ฑ ์ ์ฃผ๋ก ํ์ด์ฌ ์ธ์ด(JS๊ฐ ์ฃผ ์ธ์ด์ธ ๋) ๋ก ์ด๋ฃจ์ด์ ธ์์ง๋ง, ์ธ์ด์ ์๊ด์์ด ์คํฐ๋ ์์ ์ป์ ์ ์๋ ๋๊ธฐ๋ถ์ฌ, ๋ค์ํ ๊ด์ , ํผ๋๋ฐฑ์ ํตํ ๊ฐ์ ๋ฑ ์ด์ ์ด ๋ง์ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ๊ณ ์คํฐ๋๋ฅผ ์์ํ๊ฒ ๋์๋ค. - ์ฐฌ์ฐฌํ ์ฑ ์ ๋ณด๋ ์ค, p96์ ๋ฐํ ๋ฆฌ์ ์๋ฉธ์๊ธฐ์์ ์กฐ๊ฑด๋ฌธ์ด ๋ฌธ์ฅ์ ์๋์ ์กฐ๊ธ ๋ค๋ฅธ๊ฒ ๊ฐ์ ๋ค์ด๋ฒ์นดํ์ ๊ธ์ ์ฌ๋ ธ๋๋ฐ ์ ์๋์ด ํ์ธํ์๊ณ ์ ์คํ์ ์ฌ๋ผ๊ฐ๋ ์ํผ์๋๋ ์์๋ค. ๐ ์ฝ๋ฉํ ์คํธ ํฉ๊ฒฉ์๋๊ธฐ p64.๋ฐํ ๋ฆฌ์ ์๋ฉธ์๊ธฐ ์์์ ๋ํ ๊ถ๊ธ์ฆ
- ์ด ๊ธ์ ๊ณจ๋ ๋๋น ์ฝ๋ฉ ํ ์คํธ ํฉ๊ฒฉ์ ๋๊ธฐ ํ์ด์ฌ ํธ์ 0์ฅ ~ 4์ฅ ์จ๋จธ๋ฆฌ์ ๋๋ค.
์ฝ๋ฉํ ์คํธ ํจ์จ์ ์ผ๋ก ์ค๋นํ๊ธฐ
- ์ฑ ์์๋ ๋ช ์ ๋์ด ์์ง๋ง ํน์ ์ธ์ด์ ์ค์์ฑ์ ๋งํ์ง ์๋๋ค. ์์ ์ด ๊ฐ์ฅ ์ ํ ์ ์๋ ์ธ์ด๊ฐ ์ข๋ค!.
- ๋ฌธ์ ํ์ด ๋ฅ๋ ฅ์ ํ์ธํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ๋ถ์ํ๋ ์ฐ์ต์ด ํ์ํ๋ค.
- ์ด๋ฅผ ์ํด ๋ฌธ์ ๋ฅผ ์์ ๋จ์๋ก ๋๋์ด์ ๋ถ์, ์ ๋ ฅ๊ฐ ํ์ , ํต์ฌ ํค์๋์ ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์๋๋ก ์ ๋ฆฌ.
- ์ ์ฝ์ฌํญ์ ์ ์ฌํ ํ์ ํด์ผ ํ๊ณ ์ด๋ฅผ ๊ณ ๋ คํด์ ํ ์คํธ์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ์ฐ์ต์ ํ๋ ๊ฒ์ด ์ข๋ค.
- ํ๋ก๊ทธ๋จ์ ๋
ผ๋ฆฌ๋ฅผ ์ค๋ช
ํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ํํํ๊ธฐ ์ํด ์์ฌ์ฝ๋๋ก ์ค๊ณํ๋ ์ฐ์ต์ด ํ์ํ๋ค.
- ์์ฌ์ฝ๋๋ ์ธ๋ถ๊ตฌํ์ด ์๋ ๋์์ค์ฌ์ผ๋ก!
- ๋ฌธ์ ํด๊ฒฐ ์์๋ก ์์ฑ.
- ์ถฉ๋ถํ ํ ์คํธ.
์๊ฐ๋ณต์ก๋
- ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์ฐ์ฐ ํ์์ ์ถ์ด๋ฅผ ํ์ฉํด์ ์๊ฐ๋ณต์ก๋๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ทผ์ ํ๊ธฐ๋ฒ์ด๋ผ๊ณ ํ๋๋ฐ ์ฌ์ค ์ฑ ์ ๋ด์ฉ์ผ๋ก ์ดํด๊ฐ ๋ถ์กฑํ์ฌ ๋ฆฌ์์น ํ ์ ๋ฆฌํ ๊ฒฐ๊ณผ๋ ์ด๋ ๋ค.
์ ๊ทผ ํ๊ธฐ๋ฒ(ๆผธ่ฟ ่กจ่จๆณ,ย ์์ด:ย asymptotic notation)์ ์ด๋ค ํจ์์ ์ฆ๊ฐ ์์์ ๋ค๋ฅธ ํจ์์์ ๋น๊ต๋ก ํํํ๋ย ์๋ก ๊ณผย ํด์ํ์ ๋ฐฉ๋ฒ์ด๋ค.ย ์๊ณ ๋ฆฌ์ฆ์ย ๋ณต์ก๋๋ฅผ ๋จ์ํํ ๋๋ย ๋ฌดํ๊ธ์์ ๋ท๋ถ๋ถ์ ๊ฐ์ํํ ๋ ์ฐ์ธ๋ค. -์ํค๋ฐฑ๊ณผ-
- ์ด ์ ๊ทผ ํ๊ธฐ๋ฒ์ ์ ๊ทผ์ ์คํ ์๊ฐ์ ์ด์ฉํ๋๋ฐ, ์ฌ๊ธฐ์์ ์ ๊ทผ์ ์คํ ์๊ฐ์ด๋ ์ฃผ์ด์ง ์ ๋ ฅ๊ฐN์ด ์ปค์ง ๋, ํจ์์ ์คํ ์๊ฐ์ ์ถ์ด๋ฅผ ๋งํ๋ค.
- ํจ์์ ์คํ ์๊ฐ์ ์ถ์ด๋ ๋ง์ ์ฐ์ฐ์ด ๋นจ๋ฆฌ ๋๋ ์๋ ์๊ณ , ๋ฆ๊ฒ ๋๋ ์๋ ์๋ค.
- ์ต์ ์ ๊ฒฝ์ฐ (= ๊ฐ์ฅ ๋นจ๋ฆฌ ์คํ ๋ ๋, ์ฐ์ฐ์ด ๋นจ๋ฆฌ ๋๋ ๋ ) ๊ฐ ์์ ๊ฒ์ด๊ณ ,
- ์ต์ ์ ๊ฒฝ์ฐ (= ๊ฐ์ฅ ๋ฆ๊ฒ ์คํ๋ ๋, ์ฐ์ฐ์ด ๋ฆ๊ฒ ๋๋ ๋) ๊ฐ ์์ ๊ฒ์ด๊ณ ,
- ํ๊ท ์ด ์์ ๊ฒ์ด๋ค.
- ์ด๋ฐ ๊ฒฝ์ฐ ์ ๊ทผํ๊ธฐ๋ฒ์ ์ข ๋ฅ์ ๋ฐ๋ผ ํํ๋ ์ ์๋ค. ์ ๊ทผ ํ๊ธฐ๋ฒ์ (๋น ์ค, ๋น ์ค๋ฉ๊ฐ, ์ธํ ๋ฑ ) ์ด ์๋ค.
- ๋น ์ค ํ๊ธฐ๋ฒ์ ์ต์ , ์ต์ , ํ๊ท ์ ๊ฒฝ์ฐ์์ ์ํ์๊ฐ์ ์ํ์ ๋ํ๋ธ๋ค. (๊ฐ์ฅ ๋ฆ๊ฒ ์คํ ๋ ๋)
- ์ธํ ํ๊ธฐ๋ฒ์ ์ต์ , ์ต์ , ํ๊ท ์ ๊ฒฝ์ฐ์์ ์ํ์๊ฐ์ ํํ์ ๋ํ๋ธ๋ค. (๊ฐ์ฅ ๋นจ๋ฆฌ ์คํ ๋ ๋)
- ๊ฒฐ๋ก ์ ์ ๋ ฅ๊ฐ/๋ฐ์ดํฐ์ ์๊ฐ ํด ๋, ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ ๋ฐ๋ผ ์ํ์๊ฐ์ด ์ฐจ์ด๊ฐ ๋๋ ๊ณ ๋ คํด์ ๋ฌธ์ ์ ์ ๊ทผํด์ผ ํ๋ค.
์๊ฐ๋ณต์ก๋ ๊ณ์ฐ๋ค
์์ 1)
def solution(n):
count= 0
for i in range(n):
for j in range(n):
count+=1 // O(n^2)
for k in range(n):
count+=1 // O(n)
for i in range(2*n):
count+=1 // O(2n)
for i in range(5):
count+=1 // O(5)
์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋๋ณํ๋ ์ต๊ณ ์ฐจํญ์ธ O(n^2) ๊ฐ ์๊ฐ๋ณต์ก๋์ด๋ค.
์์ 2) N๋ฒ์งธ ์ค๊น์ง ๋ณ 1๊ฐ๋ถํฐ N๊ฐ๊น์ง ๋๋ ค๊ฐ๋ฉฐ ์ถ๋ ฅํ์ ๋ ์๊ฐ๋ณต์ก๋๋ ?
*
* *
* * *
* * * *
* * * * *
- ๋ณ์ n๊ฐ์ ์ค๋งํผ ์ฑ์ฐ๊ธฐ ์ํด ์ํํ loop์ด ํ์ํ ๊ฒ์ด๋ค.
- loop์์์ i ๊ฐ ๊ฐ ํ์ค์ด ๋ ๊ฒ์ด๊ณ , ํ ์ค๋ง๋ค *์ ํ๋ฆฐํธ ํด์ผ ํ๋๋ฐ, i ๊ฐ ๋งํผ ํ๋ฆฐํธ ํด์ผ ํ๋ค. ์ฆ O(i)๋ฒ์ ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
- ํ๋์ฝ๋ฉ์ผ๋ก * ํ์ง ์๋ ์ด์ ์ฐ์๋ ์ ํ๋ฆฐํธํ๊ธฐ ์ํด์ ์ฐ์ฐ์ด * ๊ฐ์ ๋งํผ ์ด๋ฃจ์ด์ง๋ค.
- n=5๋ผ๊ณ ํ์ ๋, ํ์ค์ i ๊ฐ ๋งํผ ๋ณ์ ์ฐ๋๋ค๋ฉด ์ฐ์ฐ ํ์๋ i ๋ฒ์งธ ์ค์ O(i) ๋งํผ ์ฐ์ฐ์ด ์ด๋ฃจ์ด ์ง๋ค.
- ์ด O(1)๋ถํฐ O(n)๊น์ง์ ํฉ์ด ์ด ์ฐ์ฐ ํ์๊ฐ ๋๊ณ , ์ด๋ฅผ ๊ฐ์ฐ์ค ๋ง์ ์ ์ด์ฉํ ์์ผ๋ก ๋ํ๋ด๋ฉด ์ต๊ณ ์ฐจํญ์ธ O(n2)์ด ๋๋ค.
์์ 3) ์ด๊ธฐ ๋ฐํ ๋ฆฌ์ ์ธํฌ ๊ฐ์๊ฐ N =16 ์ผ ๋, ํด๋ง๋ค ์ธํฌ๊ฐ์๊ฐ ์ด์ ์ธํฌ๊ฐ์์ ๋ฐ์ผ๋ก ์ค๋ค๋ฉด, ๋ชจ๋ ๋ฐํ ๋ฆฌ์๊ฐ ์ฃฝ์ ๋๊น์ง์ ์๊ฐ๋ณต์ก๋๋?
์ฃผ์ด์ง ์ ๋ ฅ๊ฐ n = 16 ์์ nโค0 ์ด ๋๊ธฐ๊น์ง ๋ช๋ฒ์ ์ฐ์ฐ์ ์ํํ๋์ง๋ฅผ ์์๋ด๋๊ฒ ๋ชฉํ์ด๋ค. ์์ ์ด๋ฏธ์ง์ ๊ฐ์ด 5๋ ์ด๋ฉด ๋ฐํ ๋ฆฌ์๊ฐ ์๋ฉธ ๋๋ค.
- 1๋ ๋ง๋ค N์ด 1/2 ๋งํผ ์ค์ด ๋ ๋ค.
- 5๋ ์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ์์์ i= 5๊ฐ ๋๋ฉด 0 ์ด ๋๋ค.
- ๋ฐํ
๋ฆฌ์์ ์๋ฉธ์ํค๋ ๋ฐํ
๋ฆฌ์์ ์๊ฐ 1๋ณด๋ค ์์์ง ๋์ธ๋ฐ, ์ด๋ฅผ ์์์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
(1/2)i * N < 1
- ์ฌ๊ธฐ์ i๋ ์ฐ๋(๋ )๋ฅผ ๋ํ๋ด๋ฉฐ, (1/2)^i๋ ์ฐ๋๋ง๋ค ๋ฐํ ๋ฆฌ์ ๊ฐ์๊ฐ ๋ฐ๊ฐ๋๋ ๋น์จ์ ๋ํ๋ธ๋ค.
- i๊ฐ ์ฆ๊ฐํ ์๋ก ๋ฐํ ๋ฆฌ์ ๊ฐ์ N ์ ๊ฐ์ํ๋ค.
- i๋ฅผ ๊ตฌํ๋ ์์์ด ๊ณง ๋ณต์ก๋๊ฐ ๋๋ค.
i > log2(N)
- ์ด๋ค N์ ๊ฐ์ด ๋ฐ์ผ๋ก ์ค์ด๋๋ ๋์์ด ์๋ค๋ฉด, ์๊ฐ๋ณต์ก๋๋
log(N)
์ด๋ผ๊ณ ๊ฐ์ฃผํ๋ค.