주어진 배열에는 미팅시간(시작,종료) 리스트가 담겨있다. 한 사람이 모든 미팅에 참여할수 있는지 판단하라.
Input: intervals = [[0,30],[5,10],[15,20]]
Output: false
https://leetcode.com/problems/meeting-rooms/
#define MAX_TIME 1000001
int timeline[MAX_TIME];
bool canAttendMeetings(int** intervals, int intervalsSize, int* intervalsColSize){
memset(timeline, 0, sizeof(int) * MAX_TIME);
for (int i = 0; i < intervalsSize; i++) {
for (int j = intervals[i][0]; j < intervals[i][1]; j++) {
if (timeline[j] != 0)
return false;
timeline[j]++;
}
}
return true;
}
추가로 2차원배열을 qsort로 정렬하는 방법 참고하기.
인자로 전달된 값을 우선 (int **)
로 형변환 해야함.
int cmp(const void *a, const void *b)
{
int *aval = *(int **)a;
int *bval = *(int **)b;
return aval[0] - bval[0];
}
bool canAttendMeetings(int** intervals, int intervalsSize, int* intervalsColSize){
qsort(intervals, intervalsSize, sizeof(int *), cmp);
for (int i = 0; i < intervalsSize - 1; i++)
if (intervals[i][1] > intervals[i + 1][0])
return false;
return true;
}