practivceAlgorithm/백준

[백준][Python] 11000강의실 배정.

findTheValue 2021. 7. 20. 22:53

강의실의 갯수N = queue의 방의 갯수.

최소 heap을 사용해 가장 빨리 돌아오는 수업 종료시간보다 시작해야하는 수업이 빠르면 방 하나 증가

적으면 끝난수업빼고 새수업 넣는다.

즉 최대 필요한 room의갯수가 계속유지된다.

최솟값, 최댓값을 계속 뽑아내야 할때는 heapq.. 잘 생각해보자

import heapq
import sys

N = int(input())

timeTable = [list(map(int,sys.stdin.readline().split())) for _ in range(N)]
timeTable.sort(key=lambda x: x[0])

queue = []
heapq.heappush(queue,timeTable[0][1])

for i in range(1,N):
    # last_time이 들어오는 시작시간보다 크면?(queue[0]은 가장 작은 last_time)
    # 방하나 늘어남
    if queue[0] > timeTable[i][0]:
        heapq.heappush(queue,timeTable[i][1])
    # 가장 작은 last_time보다 시작시간이 크면 작은거 pop하고 새로운거 넣는다.
    # 방 고대로(pop하고 넣고 반복.)
    else:
        heapq.heappop(queue)
        heapq.heappush(queue,timeTable[i][1])

print(len(queue))