



<aside> 💡 종료 시간이 같은 경우
종료 시간이 같을 때는 시작 시간이 빠른 순으로 정렬하는 기준이 포함되어야 한다. 문제에서 회의의 시작 시간과 종료 시간이 같을 수도 있다고 했는데, 예를 들어 (2,2) (1,2) 2개의 회의가 있다고 가정하면 실제로는 2개의 회의가 겹치지 않게 할 수 있지만, 로직상 (2,2)가 먼저 나오면 나중에 나온 (1,2)가 불가능할 수 있다. 따라서 종료 시간이 같으면 시작 시간이 빠른 순서로 정렬하는 로직도 추가해야 한다.
</aside>

public class 회의실_배정하기_1931 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt(); // 회의 개수
int[][] meetings = new int[N][2];
for (int i = 0; i < N; i++) {
meetings[i][0] = scan.nextInt();
meetings[i][1] = scan.nextInt();
}
Arrays.sort(meetings, (o1, o2) -> {
if (o1[1] == o2[1]) { // 종료 시간이 같다면
return o1[0] - o2[0]; // 시작 시간 기준으로 정렬
}
return o1[1] - o2[1];
});
int result = 0;
int end = -1;
for (int i = 0; i < N; i++) {
if (meetings[i][0] >= end) { // 겹치지 않는 다음 회의일 경우
end = meetings[i][1]; // 종료 시간 업데이트
result++;
}
}
System.out.println(result);
}
}