This problem shows that some bipartite matching problems have simpler greedy solutions. Always check if greedy works before implementing a full matching algorithm. Greedy is faster and easier to code.
However, many matching problems do not have greedy solutions. When the problem has complex constraints or requires global improvement across all pairs, matching is the right tool. Learn to recognize the difference.