동적 프로그래밍(Dynamic Programming, DP)은 복잡한 문제를 작은 부분 문제들로 나누고, 각 부분 문제의 결과를 저장하여 동일한 부분 문제를 여러 번 풀지 않도록 하는 알고리즘 기법입니다. 이는 특히 중복 계산을 피함으로써 효율성을 크게 향상시키며 주로 최적화 문제에서 사용됩니다.동적 프로그래밍의 사용 조건1. 최적 부분 구조(Opptimal Substructure):큰 문제를 작은 문제로 나눌 수 있으며, 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다. 2. 중복 부분 문제(Overlapping Subproblems):동일한 작은 문제를 반복적으로 해결해야 한다동적 프로그래밍은 메모이제이션(Memoization)과 타뷸레이션(Tabulation) 두 가지 접근 방법으로 구현될 수 ..