[코딩테스트][백준] 🔥 백준 19598번 "최소 회의실 개수" 문제: Python으로 완벽 해결하기! 🔥

김상욱·2024년 9월 27일
0
post-thumbnail

문제 링크

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

🕒 Python 풀이시간: 10분

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으로 백준의 "최소 회의실 개수" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊

0개의 댓글