https://www.acmicpc.net/problem/19598
import heapq
n=int(input())
meetings=[]
for _ in range(n):
heapq.heappush(meetings,tuple(map(int,input().split())))
ended=[]
cnt=0
answer=0
while meetings:
now=heapq.heappop(meetings)
while ended and ended[0]<=now[0]:
heapq.heappop(ended)
cnt-=1
heapq.heappush(ended,now[1])
cnt+=1
answer=max(answer,cnt)
print(answer)
회의를 진행할 때, 사용할 최소 회의실의 개수를 구하는 문제이다. 즉 시작과 끝 시간이 주어질 때 회의를 최소 몇개의 회의실에서 진행할 수 있는가의 문제인데 간단한 우선순위 큐 문제이다.
먼저 회의의 시작시간이 필요하기 때문에 회의를 시작시간으로 꺼내오기 위해서 우선순위 큐를가져온다. 이 때, 빈회의실이 있으면 비우고 사용하기 때문에 사용되고 있는 회의실의 갯수에서 비워지는 만큼은 빼주어야 한다. 그렇기에 강의가 진행되고 있는 회의실 중에 현재 진행할 회의를 기준으로 그 전에 끝난 강의는 전부 제거해주고 현재 사용되고 있는 강의실 갯수에서도 빼준다. 그런 후, 현재 강의를 시작해주고, 즉 힙큐에 넣어주고 사용되는 강의실을 +1해주면서 최대 사용되는 강의실의 수를 갱신시켜준다. 그러면 최소 사용되는 강의실의 갯수가 나온다.
이렇게 Python으로 백준의 "최소 회의실 개수" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊