1. Dynamic Programming복잡한 문제를 작은 문제로 나누어 푸는 알고리즘 입니다.작은 문제의 해를 저장해 나중에 같은 부분 문제를 계산하지 않도록 합니다. 조건중복 부분 문제 구조 (Overlapping Subproblems)전체 문제를 작은 부분 문제들로 나누었을 때, 같은 부분 문제들이 반복됨 Memoization: 작은 문제들의 해를 저장 및 재사용함으로써 중복계산을 방지할 수 있습니다. 최적 부분 구조 (Optimal Substructure)전체 문제의 해가 부분 문제의 해를 이용해 구해질 수 있는 성질부분 문제와 전체 문제간에 의존성이 존재합니다.이러한 의존성을 점화식으로 도출하여 전체 해를 작은 문제의 해의 조합으로 표현할 수 있습니다.작은 문제부터 해결해 나가면서, 점진적으로 ..