본문 바로가기

알고리즘 문제풀이

[알고리즘] LeetCode 252번 "Meeting Rooms" (C/C++) - Don 임베디드

문제요약:

Given a 2D vector intervals, which is a vector of meeting time vectors {start_time, end_time},

determine if a person could attend all meetings.

 

제약:

0 <= intervals.length <= 10^4

intervals[i].length == 2

0 <= start_time[i] < end_time[i] <= 10^6

 

예제 1 입력. 예제 1 출력.
[[0,30],[5,10],[15,20]] false
예제 2 입력. 예제 2 출력.
[[7,10],[2,4]] true

 

 

정답코드:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
    enum TimeType {StartTime, EndTime};
    
    bool canAttendMeetings(vector<vector<int>>& intervals) {
        if (intervals.size() == 0)
        {
            return true;
        }
        
        // sort by endtime, ascending order.
        sort(intervals.begin(), intervals.end());
        
        for (int i = 0; i < intervals.size() - 1; i++)
        {
            if (intervals[i][EndTime] > intervals[i+1][StartTime])
            {
                return false;
            }
        }
        return true;
    }
};
cs

핵심 Idea:

2차원 vector sorting은 따로 compare용 static 함수를 지정하지 않으면 element 기준으로 된다.

{{3, 4}, {1, 6}, {2, 9}} ==> {{1,6}, {2,9}, {3,4}}

 

원본 링크: https://leetcode.com/problems/meeting-rooms/