1import heapq
2
3def time_calc(time):
4 time_split = time.split(':')
5 return int(time_split[0])*60 + int(time_split[1])
6
7def solution(book_time):
8 time = []
9 q = []
10 for start, end in book_time:
11 time.append((time_calc(start), time_calc(end)))
12 time.sort(key=lambda x: x[0])
13 print (time)
14 for start, end in time:
15 if q:
16 top = heapq.heappop(q)
17 if top > start:
18 heapq.heappush(q, top)
19 heapq.heappush(q, end+10)
20 else:
21 heapq.heappush(q, end+10)
22 return len(q)
문제
- 호텔의 예약시간이 담긴 2차원 배열이 주어진다 ex) [[“12:00”, “12:30”], [“15:00”, “16:00”]]
- 퇴실 시간 10분 이후에 다음 손님이 입실 할 수 있다
- 최소 객실의 개수를 구하여라
- TC
- input
[[“15:00”, “17:00”], [“16:40”, “18:20”], [“14:20”, “15:20”], [“14:10”, “19:20”], [“18:20”, “21:20”]]
- ouput
3
- input
해결방법
- 최소 힙에 퇴실시간 + 10분 을 넣는다
- 다음 손님의 입실시간과 비교해서 퇴실시간이 더 빠르면 퇴실시간을 빼고 다시 넣는다
- 힙에 남아있는 퇴실시간의 개수가 객실의 개수이다