[코테] 백준 그리디 19598번 문제
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