비슷한 문제인 강의실과는 접근 방법이 조금 달랐다.
모든 강의를 진행하기 위해서 필요한 강의실 갯수의 최솟값과 달리 하나의 회의실에서 진행할 수 있는 회의의 최댓값이다. 이 문제는 강의실과 달리 사용할 수 있는 회의의 갯수를 최대로 맞춰야 한다.시작하는 시간이 빨라도 늦게 끝나면 최대 회의의 수를 맞출 수 없기 때문에 회의의 종료시간이 중요하게 작용한다. 따라서 회의 종료시간을 기준으로 우선순위 큐를 만들고 해당하는 회의가 종료한 시간 후에 시작하는지 확인하면 되는 문제였다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
try {
int n, cnt = 0, pos;
int []tmp;
PriorityQueue <int[]> pq = new PriorityQueue<>((a, b) -> a[1] == b[1] ? a[0] - b[0] : a[1] - b[1]);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
pq.add(new int[]{Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())});
}
pos = 0;
while (!pq.isEmpty()) {
tmp = pq.poll();
if (pos <= tmp[0]) {
cnt++;
pos = tmp[1];
}
}
System.out.println(cnt);
} catch (Exception e) {
}
}
}