[알고리즘] 동적 프로그래밍
·
개발/자료구조
1. 동적프로그래밍 문제를 더 작은 조각으로 나눈 다음에 앞에 위치한 조각을 기억하는것을 통해서 해야하는 작업의 양을 줄이는 방식으로 문제를 푸는 접근법이다. 사용 조건 최적 부분구조가 존재하는지, 반복되는 하위 문제가 있는지를 확인하고 사용할 수 있다. 문제에 어떤방식으로든 중첩되는 하위 문제들이 있어야 한다. 이 말은 한문제를 더 작은 문제들로 나눌수 있고 그 조각들중 일부가 재활용이 가능하다는 말이다. 최적부분 구조 하위 문제의 최적 해답을 통해서 더 큰 범주의 문제의 최적 해답을 구성할 수 있는 경우 해당 문제가 최적 부분 구조를 가진다고 한다. 예시) 피보나치 수열은 5번째의 수를 찾기 위해 4번째수와 3번째수를 이용한다. 2. 피보나치 function fib(n) { if (n