What you learned:
Sort by end time: for maximizing non-overlapping selections.
Greedy choice property: : Picking the earliest-ending activity never hurts.
Exchange argument: : Show any OPT can become greedy without losing quality.
One pass after sorting: : No need for DP or backtracking. You will see this pattern in many interval problems. The core idea: minimize the timeline commitment with each choice. End time determines how much room you leave for future selections.