[C#, Algorithm] Dynamic Programming(동적 계획법)
·
Unity,C#/알고리즘
■ Dynamic Programming(동적 계획법)큰 문제를 작은 문제로 나누고, 그 작은 문제의 결과를 저장하여 같은 계산을 반복하지 않도록 하는 알고리즘 기법이다.중복 부분 문제 (Overlapping Subproblems)동일한 부분 문제를 여러 번 계산하게 되는 구조.최적 부분 구조(Optimal Substructure)문제의 최적해가 부분 문제의 최적해로 구성될 수 있다.기법특징 재귀 모든 경우를 완전 탐색. 그라디 항상 가장 좋아 보이는 선택을 한다. 최적해를 보장하지 않을 수 있다. DP 중복 계산을 피하며 모든 경우를 고려. 항상 최적해를 구한다. DP에는 크게 2가지 구현 방식이 있다. 이 구현 방식을 피보나치 수열을 구하는 문제를 통해 알아보자. 1. Top-Down 방식p..