새소식

반응형
Algotithms

[백준] 11000 강의실 배정

  • -
728x90
반응형

문제

  • Si에 시작해 Ti에 끝나는 N개의 수업이 주어질 때, 최소의 몇 개의 강의실이 필요한가?
  • 수업이 끝난 직후에 다른 수업을 시작할 수 있다.
  • 1 <= N <= 200,000
    0 <= Si < Ti <= 10^9

 

풀이

  • 빨리 시작하고, 일찍 끝나는 수업 순으로 정렬하고 하나씩 확인한다.
  • 사용 중인 강의실 중에서 들어갈 수 있는 곳이 있나 확인하고, 없으면 새로운 강의실로 배정한다. 

 

import heapq
import sys
input = sys.stdin.readline

N = int(input())
time = [list(map(int, input().split())) for _ in range(N)]
# 빨리 시작하고, 일찍 끝나는 수업 순으로 정렬
time.sort(key=lambda x: (-x[0], -(x[1]-x[0])))

h = [time.pop()[1]]

while time :
    s, t = time.pop()
    if s >= h[0] :
        heapq.heappop(h)
    heapq.heappush(h, t)

print(len(h))

 

References

  • 백준 그리디
반응형

'Algotithms' 카테고리의 다른 글

[백준] 10994 별찍기 -19  (1) 2023.11.02
[백준] 1695 팰린드롬 만들기  (0) 2023.11.01
[백준] 9996 한국이 그리울 땐 서버에 접속하지  (0) 2023.10.26
[백준] 2224 명제 증명  (0) 2023.10.26
[백준] 16234 인구이동  (0) 2023.10.24
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.