[기초 개념] Dynamic Programing(동적 계획법)
·
Cumputer Science/Algorithm
Dynamic ProgramingDynamic Programing(DP)는 복잡한 문제를 작은 부분 문제(sub problem)로 나누고,그 결과를 저장하여 재활용하는 방식으로 문제를 푸는 알고리즘 기법이다. 즉, DP는 큰 문제를 작은 부분 문제로 쪼개고, 그 답을 저장해가면서 큰 문제를 푸는 방법이다. DP가 필요한 이유단순 재귀의 한계 (중복 계산)같은 부분 문제를 여러 번 푸는 비효율 → 예: 피보나치 수열에서 fib(3)이 중복 호출 됨. 시간 복잡도 개선DP를 쓰면 한 번 계산한 결과를 저장해서 O(N) 수준으로 줄일 수 있음. DP의 두 가지 핵심 조건중복되는 부분 문제 (Overlapping Subproblems)큰 문제를 해결하는 과정에서 동일한 작은 문제가 반복적으로 등장해야 함. 최..