👉 Dynamic Programming (DP) is an algorithmic paradigm used to solve complex problems by breaking them down into simpler subproblems and storing the results of these subproblems to avoid redundant computations. In essence, DP uses a bottom-up approach, starting with the smallest subproblems and building up to the final solution. This method is particularly effective for optimization problems, such as finding the shortest path in a graph or determining the longest common subsequence between two strings. By storing intermediate results, often in a table or array, DP reduces the time complexity from exponential to polynomial, making it a powerful tool for tackling problems that would otherwise be computationally infeasible.