less than 1 minute read

19598번 : 최소 회의실 개수

문제 링크

https://www.acmicpc.net/problem/19598

문제 설명

서준이는 아빠로부터 N개의 회의를 모두 진행할 수 있는 최소 회의실 개수를 구하라는 미션을 받았다. 각 회의는 시작 시간과 끝나는 시간이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다. 단, 회의는 한번 시작되면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작 시간은 끝나는 시간보다 항상 작다. N이 너무 커서 괴로워 하는 우리 서준이를 도와주자.

입력

첫째 줄에 배열의 크기 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231−1보다 작거나 같은 자연수 또는 0이다.

출력

첫째 줄에 최소 회의실 개수를 출력한다.

문제 풀이

어제 풀었던 1374번 문제랑 동일한 문제 https://twinoa.github.io/coding/%EC%BD%94%ED%85%8C-%EB%B0%B1%EC%A4%80-%EA%B7%B8%EB%A6%AC%EB%94%94-1374%EB%B2%88-%EB%AC%B8%EC%A0%9C/

from heapq import heappush, heappop
arr = []
class_arr = []

N = int(input())

for i in range(N):
    start, end = map(int, input().split())
    heappush(arr, (start, end))

while arr : 
    start, end = heappop(arr)
    
    if class_arr and class_arr[0] <= start :
        heappop(class_arr)
        
    heappush(class_arr, end) 
    
print(len(class_arr))

Comments