๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/์ฝ”๋“œ์—…(Code up)

[ python ] ์ฝ”๋“œ์—… 1901 - 1๋ถ€ํ„ฐ n๊นŒ์ง€ ์ถœ๋ ฅํ•˜๊ธฐ

by YWTechIT 2021. 4. 9.
728x90

๐Ÿ“ ์ฝ”๋“œ์—… 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๊นŒ์ง€ ์ถœ๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜๋‹จ์— ์žฌ๊ท€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ํ๋ฆ„์„ ํ™”์‚ดํ‘œ๋กœ ๊ทธ๋ ค๋ดค๋‹ค.

 

 

728x90

 

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
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€