파이썬의 heapq 라이브러리를 사용할 줄 안다면 쉽게 풀 수 있는 문제이다.
heapq는 최소 힙 구조를 제공해주며 우선순위 큐라고 생각하면 된다.
먼저 각 수업들의 시간을 입력받고 시작시간을 기준으로 정렬해준뒤 heapq에 넣어가며 끝나는 시간보다 먼저 수업이 시작되면 강의실을 새로 열어주는 방식으로 풀어나가면 된다.
import sys
import heapq
input = sys.stdin.readline
n = int(input())
major = []
for _ in range(n):
major.append(list(map(int,input().split())))
major.sort(key=lambda x : x[0])
room = []
heapq.heappush(room,major[0][1])
for i in range(1,n):
if major[i][0] < room[0]:
heapq.heappush(room,major[i][1])
else:
heapq.heappop(room)
heapq.heappush(room,major[i][1])
print(len(room))