궁금한게 많은 개발자 노트

[ leetcode ] 1288. Remove Covered Intervals 본문

Algorithm

[ leetcode ] 1288. Remove Covered Intervals

궁금한게 많은 개발자 2023. 5. 2. 11:31

여러 구간들이 주어졌을 때, 어떤 한 구간이 다른 구간에 포함되는 경우 제거하고 남은 구간의 수를 반환하는 문제입니다.

이 때 정렬이 필요한데, 기본 오름 차순 정렬이 아닌 start는 오름 차순이고 end는 큰수가 먼저 앞에 오도록 정렬해야 순서대로 확인 시 다음 구간을 포함하는지 확인하기에 용이합니다.

#include <algorithm>

bool compare(vector<int> a, vector<int> b) {
    if (a[0] == b[0]) return a[1] > b[1];
    return a[0] < b[0];
}

class Solution {
public:
    int removeCoveredIntervals(vector<vector<int>>& intervals) {
    	sort(intervals.begin(), intervals.end(), compare);
        int start = intervals[0][0];
        int end = intervals[0][1];
        int count = 0;
        for (int i = 1; i < intervals.size(); i++) {
        	if (end >= intervals[i][1]) count++;
            else end = intervals[i][1];
        }
        return intervals.size() - count;
    }
};
Comments