๐์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ - 11
ํ์ต๊ธฐ๋ก
์ค๋ ๋ค์ ๊ฐ์ ๋ชฉ๋ก
- ๊ณต๊ฐ๋ณต์ก๋ - 1
- ๊ณต๊ฐ๋ณต์ก๋ - 2
- ์ฌ๊ท - 1
๊ณต๊ฐ๋ณต์ก๋?
์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ ํ๋จํ๊ธฐ ์ํ ๊ธฐ์ค์ ์๊ฐ๋ณต์ก๋์ ๊ณต๊ฐ๋ณต์ก๋๋ก ํํ๋ ์ ์๋ค.
์๊ฐ๋ณต์ก๋๋ ์ ๋ฒ์ ์ค๋ช
ํ๋ฏ์ด ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ์คํํ๋์ง(๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง)๋ฅผ ๋ํ๋ด๊ณ ,
๊ณต๊ฐ๋ณต์ก๋๋ ์ผ๋ง๋ ๋ง์ ์ ์ฅ๊ณต๊ฐ์ด ํ์ํ์ง๋ฅผ ๋ํ๋ธ๋ค.
๋๋ถ๋ถ ๋ ๋ค ๋ง์กฑ์ํค๊ธฐ๋ ์ด๋ ต๋ค.
์๋ก ๋ฐ๋น๋ก์ ์ธ ๊ด๊ณ๋ค.
์์ฆ์ ์๊ฐ๋ณต์ก๋๊ฐ ์ฐ์ ์ธ๋ฐ, ์๋ํ๋ฉด ์๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ฑ ๊ณต๊ฐ์ด ๋ถ์กฑํ์ง๋ง,
ํ๋์๋ ๋๋ถ๋ถ ๋์ฉ๋์ผ๋ก ๋ฐ๋๋ฉด์ ๊ณต๊ฐ์ด ๋ถ์กฑํ์ง ์๊ธฐ ๋๋ฌธ
๋น
๋ฐ์ดํฐ ๋ฑ์์๋ ์ ๊ฒฝ์ด๋ค๊ณ ํจ.
๊ทธ๋ผ์๋ ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ๋ฐฐ์ฐ๋ ์ด์ ๋,
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ด ๊ฑธ๋ ค์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ํด์ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋ก ์ธํด ํ๋ ธ๋ค๊ณ ๋์จ๋ค.
๋ฉด์ ์ ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ๋ฌป๊ธฐ๋ ํ๋ค๊ณ ํจ.
๊ณต๊ฐ๋ณต์ก๋ (Space Complexity)
$S(P)=c+S_p(n)$ $c$ : ์์ ๊ณต๊ฐ $S_p(n)$ : ๊ฐ๋ณ ๊ณต๊ฐ
๊ณต๊ฐ๋ณต์ก๋ ๊ณ์ฐ 1
def factorial(n):
if n > 1:
return n * factorial(n - 1)
else:
return 1
๊ณต๊ฐ๋ณต์ก๋ : $O(n)$
์ด ํจ์์ ๊ฒฝ์ฐ
factorial(n), factorial(n - 1), factorial(n - 2), โฆ, factorial(1)๊น์ง ์คํ๋๋ค.
factorial์ด ํ๋ฒ ์คํ๋ ๋๋ง๋ค ์์ฑ๋๋ ๋ณ์๋ n์ผ๋ก ํ๊ฐ์ด๋ค.
factorial์ด n๋ฒ ์คํ๋๋ฏ๋ก ๊ณต๊ฐ๋ณต์ก๋๋ O(n)๊ณผ ๊ฐ๋ค.
๊ณต๊ฐ๋ณต์ก๋ ๊ณ์ฐ 2
def factorial(n):
fac = 1
for index in range(2, n + 1):
fac = fac * range
return fac
๊ณต๊ฐ๋ณต์ก๋ : $O(1)$ ๋ณ์๊ฐ index์ fac ๋๋ง ํ์ํ๊ธฐ๋๋ฌธ์ ๊ณต๊ฐ๋ณต์ก๋๋ $O(1)$์ด ๋๋ค.
์ด์ฒ๋ผ ๊ณต๊ฐ๋ณต์ก๋๋ ๋ณ์์ ๊ฐฏ์๋งํผ ์ธ๋ฉด ๋๋ค.
์ฌ๊ท ํธ์ถ (recursive call)
ํจ์ ์์์ ๋์ผํ ํจ์๋ฅผ ํธ์ถํ๋ ํํ
์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ ์์ฑ์ ์ ์ฉํ๊ฒ ์์ฑ๋๋ค
์ฌ๊ท ํธ์ถ์ ์์ฐ๊ณ ๊ตฌํํ ์๋ ์์ง๋ง ๋ถํธํ๊ฒฝ์ฐ๋ ๊ฝค๋ง๋ค
(+ ์ฌ๊ทํธ์ถ์ด ๊ณ์๋๋ฉด, ์คํ์ ์์ฌ์ ๊ณต๊ฐ์ ์๊ทผ ์ฐจ์งํ๊ฒ ๋๋ค)
ํฉํ ๋ฆฌ์ผ ์ฌ๊ทํจ์ ๊ตฌํ
def factorial(num):
if num > 1:
return num * factorial(num - 1)
else:
return num
for num in range(10):
print(factorial(num))
์ฌ์ง์ฒ๋ผ ์ ์๋ํ๋ค.
factorial(num) -> num * factorial(num - 1) -> num * num - 1 * factorial(num - 2) โฆ
์ด๋ฐ ํํ๋ก ์๋ํ๊ฒ ๋๋ค.
๋ง์ง๋ง
๊ณต๊ฐ๋ณต์ก๋๋ ์์์ผํ๋ค.
๊ทธ๋ ๊ฒ ์ด๋ ต์ง์์์ ๊ทธ๋ฅ ๊ธ๋ฐฉ ๊ตฌํ ์ ์๋ค.
c๊ฐ์ ๊ฒฝ์ฐ ์๋ฃํ๋ง๋ค ํฌ๊ธฐ๊ฐ ์ ํด์ ธ์์ด ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๊ตฌํ ์ ์๋ค.
(ํ์ด์ฌ์ ๋ณ์ ํ๋์ ์ผ๋ง๋ ๋จน๋์ง ๋ชจ๋ฅด๊ฒ ๋ค. ์ฐพ์๋ณธ์ ์ด ์์ด์)
๋๊ธ๋จ๊ธฐ๊ธฐ