11000 강의실 배정

우선순위 큐는 일반적인 FIFO가 아닌 큐에서 우선순위가 높은 요소들이 먼저 뽑혀 나온다. 이런 특성을 이용하면 최소 강의실 수를 구할 수 있다.

먼저 시작하는 강의 순서로 정렬되어 있어야 하므로 2차원 배열로 받은 강의실의 값을, 강의가 시작하는 시간이 빠른 순서로 오름차순 정렬한다. (먼저 시작하는 강의가 강의실을 선점하므로)

이후 우선순위 큐(pq)에 처음으로 시작하는 강의의 끝나는 시간을 넣고, 강의를 순차적으로 탐색하며 강의실의 수를 구한다.

1.  `다음 수업의 시작시간` ≥ `가장빨리 끝나는 현재 수업의 끝나는 시간`
    - 연달아 사용할 수 있으므로 pq.poll()을 하고, 다음 수업의 끝나는 시간을 큐에 담는다.
2. `다음 수업의 시작시간` < `가장 빨리 끝나는 현재 수업의 끝나는 시간`
    - 현재 수업이 끝나기전까지 사용할 수 없으므로 강의실을 하나 더 두어야 한다.
    따라서 pq에 다음 수업의 끝나는 시간을 담기만한다.

위 과정을 n-1번만큼 반복하면, 큐에 남는 데이터들의 수가 필요한 강의실의 수가 된다.