๐ ์ฝ๋์ 1901 - 1๋ถํฐ n๊น์ง ์ถ๋ ฅํ๊ธฐ
์ฝ๋์ 1901 - 1๋ถํฐ n๊น์ง ์ถ๋ ฅํ๊ธฐ
โก๏ธ ๋์ ํ์ด
์ฌ๊ท ํจ์ ๋ฌธ์ ์ค ๊ฐ์ ๋ฌธ์ ๋ผ๋ 1๋ถํฐ n๊น์ง ๊ตฌํ๋ ๋ฌธ์ ๊ฐ ์๋ ๋ฐ๋ฉด, n๋ถํฐ 1๊น์ง ์ญ์์ผ๋ก ๊ตฌํ๋ ๋ฌธ์ ๋ ์๋ค.
์ฌ๊ท ํจ์์์ ์์๋์ด์ผ ํ ์๋ฃ๊ตฌ์กฐ๋ ์คํ(stack)
์ด๋ค. stack์ ํน์ฑ์ ์ฌ๊ท ํจ์๋ ๋์ค์ ๋ค์ด์จ ๊ฐ์ด ์ ์ผ ๋จผ์ ๋๊ฐ๊ฒ ๋๋ ํ์
์ ์ถ(LIFO)
๊ตฌ์กฐ์ธ๋ฐ, ์ฌ๊ธฐ์๋ ์ ์ผ ๋ง์ง๋ง์ ํธ์ถํ ํจ์๋ฅผ ์ ์ผ ๋จผ์ ํธ์ถํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
์ด ๋ฌธ์ ๋ 1๋ถํฐ n๊น์ง ๊ตฌํ๋ ๋ฌธ์ ์ธ๋ฐ, ํจ์์ ํธ์ถ ์์๋ฅผ ์๊ณ ์ถ์ด print(f(n))์ ์ค์ ํ๋ค. ๋ ๋ง์ง๋ง์ return
์ ์ ์ง ์์๋ ๋์ง๋ง, ์ด๋ ํ ํ๋ฆ์ผ๋ก ์งํ๋๋์ง ์๊ณ ์ถ์ด ๋ช
์์ ์ผ๋ก ์ ์๋ค.
์ ์ฒด์ ์ธ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์
๋ ฅ๊ฐ์ 5๊ฐ ๋ค์ด์ค๊ฒ ๋๋ฉด 5๋ 1๊ณผ ๊ฐ์ง์์ผ๋ฏ๋ก bottom_up(4)
๋ฅผ ํธ์ถํ๊ฒ๋๋ค.
2. bottom_up(4)
๋ 1๊ณผ ๊ฐ์ง ์์ผ๋ฏ๋กbottom_up(3)
๋ฅผ ํธ์ถํ๊ฒ ๋๊ณ ๋ง์ง๋ง์ผ๋ก n์ด 1์ผ ๋๋ print(n)์ ๊ฑฐ์น๊ณ return
์ ํ๊ฒ ๋๋ค.
3. return
์ ํ ๋๋ ์คํ์ ํธ์ถ๋๋ ํจ์๋ค์ ๋ค์ ์ฐพ์๊ฐ๋ค(๋ฐ์์๋ถํฐ) bottom_up(1)
์ ํธ์ถํ n=2
๋ print(n)์ ํ๊ฒ ๋๊ณ ๋๋ค์ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก print๋ 1์์๋ถํฐ n๊น์ง ์ถ๋ ฅํ๊ฒ ๋๋ค. ํ๋จ์ ์ฌ๊ท ํจ์ ํธ์ถ์ ํ๋ฆ์ ํ์ดํ๋ก ๊ทธ๋ ค๋ดค๋ค.
def bottom_up(n):
print(f'f({n})', end=' ')
if n != 1:
bottom_up(n-1)
print(f'f({n})', n)
return
bottom_up(5)
๐๐ฝ
f(5)
f(4)
f(3)
f(2)
f(1) f(1) 1
f(2) 2
f(3) 3
f(4) 4
f(5) 5
'Algorithm > ์ฝ๋์ (Code up)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ python ] ์ฝ๋์ 1920 - 2์ง์ ๋ณํ (0) | 2021.04.09 |
---|---|
[ python ] ์ฝ๋์ 1905 - 1๋ถํฐ n๊น์ง์ ํฉ ๊ตฌํ๊ธฐ (0) | 2021.04.09 |
[ python ] ์ฝ๋์ 1904 - ๋ ์ ์ฌ์ด์ ํ์ ์ถ๋ ฅํ๊ธฐ (0) | 2021.04.09 |
[ python ] ์ฝ๋์ 1902 - 1๋ถํฐ n๊น์ง ์ญ์์ผ๋ก ์ถ๋ ฅํ๊ธฐ (0) | 2021.04.09 |
[ ํ์ด์ฌ(python) ] ์ฝ๋์ - python ๊ธฐ์ด 100์ (0) | 2021.04.01 |
๋๊ธ