이 블로그를 참고하였다. 활동 선택 문제(activity selection problem) 라고 하는 문제라고 한다. 또는 interval scheduling. 서로 겹치지 않는 범위를 가진 최대 개수를 구한다. 회의실의 종료시간이 가장 작은 것들 중에도 종료시간에 가장 가까운 시작점을 가진 것을 선택해야 한다
static class Meeting implements Comparable<Meeting> {
int start;
int end;
Meeting(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public int compareTo(Meeting o) {
if (this.end == o.end) {
return this.start - o.start;
}
return this.end - o.end;
}
}
Collections.sort(arr);
int count = 0;
int prev_end = 0;
for (int i = 0; i < n; i++) {
if (arr.get(i).start >= prev_end) {
prev_end = arr.get(i).end;
count++;
}
}