[ BOJ / Python ] 19598번 최소 회의실 개수

황승환·2022년 7월 8일
0

Python

목록 보기
353/498


이번 문제는 그리디 알고리즘과 최소힙을 이용하여 해결하였다. 전에 풀었던 강의실 문제와 거의 유사한 문제였다. 회의 정보를 입력받아 최소힙에 담고, 이를 하나씩 꺼내어 회의실 최소힙의 첫번째 원소와 비교하여 회의 시작 시간이 최소힙의 원소보다 크거나 같을 경우 회의실 최소힙을 heappop해주고, heappush로 현재 회의의 종료시간을 넣어준다. 미만인 경우에는 회의실 최소힙에 heappush로 현재 회의의 종료시간을 넣어주도록 하고, 최종적으로 회의실 최소힙의 길이를 출력하였다.

Code

import heapq
n = int(input())
meeting = []
for _ in range(n):
    s, e = map(int, input().split())
    heapq.heappush(meeting, (s, e))
rooms = []
for i in range(n):
    cur = heapq.heappop(meeting)
    if not rooms:
        heapq.heappush(rooms, (cur[1]))
    else:
        if rooms[0] <= cur[0]:
            heapq.heappop(rooms)
            heapq.heappush(rooms, cur[1])
        else:
            heapq.heappush(rooms, cur[1])
print(len(rooms))

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글