문제 설명
호텔을 운영하는 코니는 최소한의 방으로 예약을 하려고 한다.
1회 사용한 객실은 체크아웃 시간에 따라 10분간 청소 후 다음 손님이 이용하실 수 있습니다.
문자열 형태의 예약 시간을 포함하는 2차원 배열 book_time
이 매개변수가 제공되면 Connie가 필요로 하는 최소 방 수를 반환하는 solve 함수를 완성합니다.
제한
- 1 ≤
book_time
길이 ≤ 1,000
-
book_time(i)
(“HH:MM”, “HH:MM”) 형식의 배열입니다.
- (공간 시작 시간, 공간 종료 시간) 형태.
-
시간은 HH:MM 형식의 24시간 표기법을 따르며 “00:00″에서 “23:59″까지 지정됩니다.
- 자정 이후에는 절대 예약하지 않습니다.
- 시작 시간은 항상 종료 시간 이전입니다.
- 자정 이후에는 절대 예약하지 않습니다.
I/O 예시
book_time | 결과 |
---|---|
((“15:00”, “17:00”), (“16:40”, “18:20”), (“14:20”, “15:20”), (“14:10”, “19:20”), (“18:20”, “21:20”)) | 삼 |
((“09:10”, “10:10”), (“10:20”, “12:20”)) | 하나 |
((“10:20”, “12:30”), (“10:20”, “12:30”), (“10:20”, “12:30”)) | 삼 |
I/O 예시 설명
I/O 예제 #1
위의 그림과 같습니다.
I/O 예제 #2
첫 번째 손님이 오전 10시 10분에 나가서 10분간 청소를 하고, 두 번째 손님이 오전 10시 20분에 입실하여 사용하기 때문에 방 하나만 있으면 됩니다.
I/O 예제 #3
게스트 3명이 모두 같은 시간대를 예약했으므로 객실이 3개 필요합니다.
참조 응답 응답
- 먼저 종료시간을 따로 저장해서 heapq와 비교를 해보았지만 실패했습니다.
- 그래서 찾아보니 아래와 같이 dic의 key로 시작시간과 종료시간을 10분으로 설정하여 값을 더해주는 방법이 있었습니다.
- 겹치는 간격은 공간이 여전히 필요함을 의미하므로 1을 더합니다.
- 겹치는 간격은 공간이 여전히 필요함을 의미하므로 1을 더합니다.
- 가격대비 깔끔하고 간편해서 너무 좋은 방법인거 같아요.
- 많이 배웠습니다.
def time_to_minute(time):
return int(time(:2)) * 60 + int(time(3:))
def solution(book_time):
dic = {}
for book in book_time:
start = time_to_minute(book(0))
end = time_to_minute(book(1))
for t in range(start, end+10):
dic
return max(dic.values())