문제 설명
- HH:MM, HH:MM 형태로 입실 시간과 퇴실 시간이 주어진다.
- 퇴실 후 10분 정도 텀이 존재
- 주어진 시간대가 겹치지 않도록 방을 운영하려고 한다면 필요한 방의 최소값을 구하는 문제
풀이
- HH:MM 시간을 => 숫자로 변환 => hour * 60 + minute
- 최소힙을 이용해서 입실 시간이 빠른 순대로 원소를 뽑아 시간대를 비교하며 카운트
import heapq
def time_transform(string):
hour, minute = string.split(":")
return int(hour) * 60 + int(minute)
def solution(book_time):
answer = 0
q = []
hotel = []
heapq.heapify(q)
for start, end in book_time:
start, end = time_transform(start), time_transform(end)
heapq.heappush(q, (start, end))
while q:
s, e = heapq.heappop(q)
if not hotel:
hotel.append(e)
else:
l = len(hotel)
for i in range(l):
if hotel[i]+10<=s:
hotel[i] = e
break
else:
hotel.append(e)
return len(hotel)