Algorithm (PS)

[백준] 19598 최소 회의실 개수 Python

minjiwoo 2022. 10. 23. 01:17
728x90

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

 

19598번: 최소 회의실 개수

2개 회의실로 3개 회의를 모두 진행할 수 있다. 예를 들어, 첫번째 회의실에서 첫번째 회의를 진행하고 두번째 회의실에서 두번째 회의와 세번째 회의를 진행하면 된다. 1개 회의실로 3개 회의

www.acmicpc.net

import sys
import heapq
input = sys.stdin.readline
n = int(input())
times = []
temp = []

for _ in range(n):
    start, end = map(int, input().split())
    times.append([start, end])

times.sort() # 시작 시간을 기준으로 오름차순 정렬
temp.append(times[0][1]) # 첫번째 원소를 넣기 (s, e)
for i in range(1, n):
    start, end = times[i][0], times[i][1]
    e = temp[0] # 회의 끝나는 시간 , 우선순위 큐에서 가장 작은 것
    if e > start: # 새로운 회의실을 사용해야 하는 경우
        heapq.heappush(temp, end) # 우선순위 큐
    else: # e <= start : 같은 회의실을 사용할 수 있는 경우
        heapq.heapreplace(temp, end)

# 원래는 배열을 이용해서 풀었고, 사용가능한 회의실을 찾을 때 for문으로 선형탐색을 함 -> 이중 for문 수행 필요 -> 시간초과
# 우선순위 큐를 사용해도 되는 문제이다 끝나는 시간이 제일 빠른 방을 사용하면 되기 때문
print(len(temp))
728x90