I have solved a few optimizations problems using dynamic programming, but some of those problems are also solvable by Greedy algorithms which are computationally more efficient to calculate.
For example, the minimum coin change problem is solvable both by dynamic programming and a greedy approach.
How would someone go about proving a problem that is solvable by dynamic programming can also be solvable by a greedy algorithm?
What is the main intuition behind it? What are some of the main properties that greedy problems share and what are the characteristics I should look for?