More actions
({CREATE}) |
No edit summary |
||
| Line 1: | Line 1: | ||
__TOC__ | |||
== Dynamic Programming == | |||
* 한국어로는 동적 계획법 | |||
* 사실 그냥 멋있어서 붙인 이름 | |||
* 문제를 작은 문제로 나누는 것에서 출발 | |||
== 문제 == | |||
* 문제를 푸는법 | |||
** 문제를 나눈다. | |||
** 문제를 푼다. | |||
** 결과를 합친다. | |||
=> Divide And Conquer (분할 정복) | |||
** 예시 | |||
*** 피보나치 함수 ( f(n) = f(n-1) + f(n-2), f(0) = 0, f(1) = 1 ) | |||
*** 기본 정의에 의한 Fibonacci 구현 | |||
=> 중복이 많이 발생 | |||
=> 중복에 대한 결과를 미리 저장한다면 | |||
=> Memoization(메모이제이션)! | |||
** Memoization : 동일한 계산을 반복해야 할 때, 이전 계산 값을 저장함으로써 빠르게 계산하는 방법 | |||
*** Dynamic Programming 에서 핵심이 되는 기술 | |||
== 실제 문제 풀이 == | |||
* 백준 2748 - 피보나치 수 2 | |||
Revision as of 05:10, 29 June 2017
Dynamic Programming
- 한국어로는 동적 계획법
- 사실 그냥 멋있어서 붙인 이름
- 문제를 작은 문제로 나누는 것에서 출발
문제
- 문제를 푸는법
- 문제를 나눈다.
- 문제를 푼다.
- 결과를 합친다.
=> Divide And Conquer (분할 정복)
- 예시
- 피보나치 함수 ( f(n) = f(n-1) + f(n-2), f(0) = 0, f(1) = 1 )
- 기본 정의에 의한 Fibonacci 구현
- 예시
=> 중복이 많이 발생 => 중복에 대한 결과를 미리 저장한다면 => Memoization(메모이제이션)!
- Memoization : 동일한 계산을 반복해야 할 때, 이전 계산 값을 저장함으로써 빠르게 계산하는 방법
- Dynamic Programming 에서 핵심이 되는 기술
- Memoization : 동일한 계산을 반복해야 할 때, 이전 계산 값을 저장함으로써 빠르게 계산하는 방법
실제 문제 풀이
- 백준 2748 - 피보나치 수 2