๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿฆ• ๊ณต๋ฃก์ด ๋˜์ž!

๋™์ ๊ณ„ํš๋ฒ•(Dynamic Programming) ๋ณธ๋ฌธ

Development/CodingTest

๋™์ ๊ณ„ํš๋ฒ•(Dynamic Programming)

Kirok Kim 2022. 1. 24. 17:21
  • ํ•˜๋‚˜์˜ ํฐ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ณตํ†ต๋˜๋Š” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด์„œ ์ž‘์€ ๋ฌธ์ œ์˜ ์ •๋‹ต๋“ค์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‘ธ๋Š” ๊ณผ์ •
  • ์ ํ™”์‹
    • ์ˆ˜์—ด์—์„œ n๋ฒˆ์งธ ํ•ญ์„ ์ด์ „์— ๋‚˜์˜จ ํ•ญ๋“ค๋กœ ๋‚˜ํƒ€๋‚ธ ๊ณต์‹
  • Bottom up ๋ฐฉ๋ฒ•
    • ์ž‘์€ ๋ฌธ์ œ์—์„œ ํฐ ๋ฌธ์ œ๋กœ ๋ฐ˜๋ณต๋ฌธ ํ˜ธ์ถœ
    • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด

 

[1,1,2,3,5,8,13,21]
def fib(n):
	fibList[1,1]
	for i in range(2,n+1):
		fibList.append(fibList[i-2]+fibList[i-1])
	return fibList[-1]
  • Top Down ๋ฐฉ๋ฒ•
    • ํฐ ๋ฌธ์ œ์—์„œ ์ž‘์€ ๋ฌธ์ œ๋กœ ์žฌ๊ท€ ํ˜ธ์ถœ
  • [1,1,2,3,5,8,13,21]
    def fib(n):
    	if n==0||n==1:
    		return 1
    	else:
    		return fib(n-1)+fib(n-2)
    
     
  • ๋ฉ”๋ชจ์ด์ œ์ด์…˜(Memoization)
    • ๋ฐฐ์—ด ํ˜น์€ ํ•ด์‹œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ
    • memo={0:1,1:1}
      def fib(n):
      	if n in memo:
      		return memo[n]
      	else:
      		result = fib(n-1)+fib(n-2)
      		memo[n]=result
      		return result
      
       
      • data=[3,4,5,6,1,2,5]
        
        def solution(data):
        	if len(data)==1:
        		return data[0]
        	result = [data[0],max(data[0],data[1])
        	for i in range(2,len(data)):
        		result.append(max(result[i-1],sesult[i-2]+data[i])
        	return result[-1]

 

 

 

๋ฐ˜์‘ํ˜•
Comments