Main choice
Greedy makes the best-looking choice now and never goes back. Dynamic programming stores answers to smaller states because the same subproblems come back again.
Use greedy only when you can explain why the local choice is safe. Use DP when you need to try choices and keep the best result.
Greedy signals
Greedy problems often ask for minimum coins, maximum activities, intervals, jumps, or scheduling. But the topic name can trick you in placements.
Ask: after I pick this option, can any better full answer require me to undo it? If yes, greedy is unsafe.