Algorithm Problems

Dynamic Programming

WakaraNai 2021. 12. 26. 21:15
728x90
반응형

제일 작은, 간단한 방법을

순차적으로, 누적하며 진행하여 큰 값을 구하는 방식

초기 조건 설정과 점화식 세우기가 중요

 

 

피보나치 점화식을 통해 설명하자면,

점화식은 다음과 같다

Fn = Fn-1 + Fn-2

 

보통 이를 재귀함수로 구현했을 때 코드는 다음과 같다

def fibo(n):
	if n < 3:
    	return 1
    return fibo(n-1) + fibo(n-2)

n번째라는 큰 숫자를 넣고 n-1, n-2를 해가며 작아지는 top-down 형식이

바로 재귀 Recursion을 쓴 것

 

 

그럼 Dynamic Programming은 이와 다르게

작은 규칙들을 하나씩 쌓아 올려 큰 값에 도달하는 bottom-up 형식

n = 5   # 몇 번째 피보나치 수를 출력할 것인가

d = [0]*(n+1)
d[1] = d[2] = 1
# 1 1 2 3 5 8 .. 에서 앞에 두 개

for i in range(3, n+1):
	d[i] = d[i-1]+[i-2]
print(d[-1])
728x90
반응형

'Algorithm Problems' 카테고리의 다른 글

[백준][Python] 2293번 동전1 - DP  (0) 2022.01.22
Binary Search  (0) 2021.12.26
DFS/BFS(2차원) 설명  (0) 2021.10.24
[카카오_인턴][Python] 수식 최대화  (0) 2021.09.22
[프로그래머스][Python] 124 나라의 숫자  (0) 2021.09.21