Dynamic Programming (DP) is used to solve problems by breaking them into smaller subproblems.
Key ideas:
- Overlapping subproblems
- Optimal substructure
Common patterns:
- Fibonacci
- Knapsack problem
- Longest common subsequence
DP can be challenging but becomes easier with practice.