강의실의 갯수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))
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 11725 트리의 부모찾기 (0) | 2021.07.21 |
---|---|
[백준][Python] 1342 행운의 문자열 (0) | 2021.07.20 |
[백준][Python] 16929 two_dots (0) | 2021.07.20 |
[백준][Python] 1629 곱셈 (0) | 2021.07.20 |
[백준][Python] 1261 알고스팟 (0) | 2021.07.20 |