Greedy problems require intuition. You need to recognize when greedy works and what the greedy criterion should be. The best way to build this intuition is deliberate practice:
Try greedy first.: For any optimization problem, ask: what is the locally optimal choice?
Find counterexamples.: If greedy fails, construct a case where the greedy choice leads to a suboptimal answer.
Prove or disprove.: Use exchange argument or stays-ahead to verify your greedy approach.
Recognize patterns.: Activity selection, interval covering, and scheduling appear in many disguises.