호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다. 예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요.
호텔 시간이 문자열이므로 정수로 처리 후, 시작시간과 끝시간을 기준으로 정렬한다. 우리의 목표는 최대로 동시에 호텔 방을 점유할 때 그 값을 찾는 것이므로 점유 변수를 생성 후, 만약 체크인이라면 1을 추가, 체크아웃이라면 1을 감소하면 된다. 체크아웃과 체크인 지점이 겹칠 때 체크아웃에 우선순위를 두어야 정확하게 측정이 가능하다. 유념할 점은 호텔 체크아웃 시 방청소에 10분이 걸린다는 점만 고려해주면 된다.
풀이 코드
def time_convert(string) :
h, m = map(int, string.split(":"))
return h*60 + m
def solution(book_time):
answer = 0
check_change_list = list()
for start, end in book_time :
check_change_list.append((time_convert(start), 1))
check_change_list.append((time_convert(end)+10, 0))
check_change_list.sort()
tmp = 0
for t, chk in check_change_list :
tmp += -1 if chk == 0 else 1
answer = max(answer, tmp)
return answer