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]
-
ė°ģķ