I think your algorithm is greedy because it is just trying to modify the greedy objective only.
For this problem the greedy objective would be to:
1. Look for the interval with the smallest end time ([l,r])and then choose the interval that start before 'r' and has the farthest end time .
2.After choosing the interval we remove all the intervals covered by this range and we keep repeating this until all intervals are covered.
Your solution is doing exactly same thing using a stack .