Greedy algorithms tend to make a "greedy choice," or the choice that looks best in the moment, to solve a subproblem. And it doesn't bother to solve related subproblems. On the other hand, dynamic programming first finds optimal solutions to subproblems, then makes an informed choice. As a result, dynamic programming is generally more efficient. Learn more about dynamic programming in today's article.