Dynamic Programming (동적계획법)
·
algorithm
지금까지 recursion을 사용해서 여러 문제를 풀었는데, 과연 recursion이 항상 최선이었을까?당장 이전에 썼던 곱셈 문제도 더 빠른 방식이 존재했었다. (중복되는 recursion을 줄여서 속도를 올림)그렇기 때문에 점화식과 이전의 결과값을 보고 더 빠른 방법이 있는지 찾는 것이 동적계획법이다.(이름은 동적계획법인데 딱히 동적과는 관련은 없다) Fibonacci 수열을 예로 보자RecFIBO(n): if n=0 return 0 else if n=1 return 1 else return RecFIBO(n-1) + RecFIBO(n-2)이 코드를 점화식으로 나타내면 T(n) = T(n-1) + T(n-2) + O(1)시간복잡도를 구하면 다음과 같다고 한다. (1.618...이게 황금비라고 ..