# 혼자 공부하고 정리하는 블로그 "동적 프로그래밍(Dynamic Programming, DP)"은 복잡한 문제를 해결하기 위해 문제를 더 작은 부분 문제로 나누고, 그 결과를 재사용하여 효율적으로 문제를 푸는 알고리즘 기법. 동적 프로그래밍을 사용하는 주요 이유는 중복되는 계산을 피하고 계산 속도를 향상시키기 위해서임. 1. 중복 계산 방지많은 문제에서 동일한 부분 문제가 여러 번 반복되며 등장하는데, 이를 메모이제이션(memoization)이나 타뷸레이션(tabulation)을 통해 결과를 저장하고 재사용함으로써 중복된 계산을 줄일 수 있다. 예를 들어, 피보나치 수열을 재귀적으로 계산하는 경우, 동일한 값을 여러 번 계산하게 됨. 이를 동적 프로그래밍을 사용하면 한 번 계산한 값을 저장해 놓고 필요..