- 처음엔 일반적인 최소 강의실 배정의 수를 묻는 줄 알고 정렬한 다음 필요한 강의실의 개수를 세는 방법으로 접근했다가 잘못 이해한 것을 뒤늦게 깨닫고 다시 접근했다.
- 질문게시판에 있는 설명을 참고해서 코드를 작성했다.
입력
3
1 3
2 4
3 5
출력
2
import heapq
import sys
input = sys.stdin.readline
N = int(input())
timetable = []
for _ in range(N):
S, T = map(int, input().strip().split())
timetable.append([S, T])
timetable.sort(key = lambda x : x[0])
heap = []
heapq.heappush(heap, timetable[0][1]) # 첫 번째 강의 종료시간
for i in range(1, N):
# 강의 종료시간이 다음 강의 시작시간보다 뒤에 있다면?
if heap[0] > timetable[i][0]:
heapq.heappush(heap, timetable[i][1])
# 만약 강의 종료시간이 다음 강의 시작시간과 같거나 앞에 있다면?
else:
heapq.heappop(heap)
heapq.heappush(heap, timetable[i][1])
print(heap)