record logo record

다이나믹 프로그래밍(Dynamic Programming) 이란?

다이나믹 프로그래밍(Dynamic Programming)의 특징

다이나믹 프로그래밍(Dynamic Programming)의 알고리즘 예시

1. Dynamic Programming 기본 형태 구현

#include <stdio.h>

int d[100];
// dp 의 기본 형태 
int dp(int x){
	if( x == 1 ) return 1;
	if( x == 2 ) return 1;
	return dp(x-1) + dp(x-2);
}
int main(void){
	printf("%d ",dp(40));
	return 0;
}

2. Dynamic Programming 메모이제이션(Memoization)이용하여 구현

#include <stdio.h>

int d[100];

// 개선한 dp 형태 
int dp(int x){
	if( x == 1 ) return 1;
	if( x == 2 ) return 1;
    // 메모이제이션 이용
	if(d[x] != 0) return d[x];
	return d[x] = dp(x-1) + dp(x-2);
}

int main(void){
	printf("%d ",dp(40));
	return 0;
}

관련 문제

References