Algorithm
[우선순위 큐] 백준-11000 강의실 배정 골드4 (Python)
차노도리
2023. 4. 26. 22:36
백준-11000 : 강의실 배정
https://www.acmicpc.net/problem/11000
11000번: 강의실 배정
첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109)
www.acmicpc.net
풀의
- 입력 받은 강의 정보들을 시작 시간 기준으로 정렬한다.
- 우선순위 큐에 강의 정보의 첫번쨰 값의 끝나는 시간을 넣어준다.
- 강의 리스트를 순회하며
- 우선순위 큐의 첫번째 값보다 작다면 해당 강의실에서 강의 가능한 값이므로 끝나는 값으로갱신한다.
- 우선순위 큐의 첫번째 값보다 크다면 강의실을 하나더 추가해야 함으로 끝나는 값을 우선순위 큐에 넣어준다.
코드 (Python)
import sys
import heapq
def input():
return sys.stdin.readline().rstrip()
n = int(input())
lecture_list = [list(map(int, input().split(" "))) for _ in range(n)]
# 시작 순으로 정렬
lecture_list.sort(key=lambda x : x[0])
heap = [lecture_list[0][1]]
for start,end in lecture_list[1:]:
if heap[0] <= start:
heapq.heappop(heap)
heapq.heappush(heap,end)
print(len(heap))