프로그래머스/lv.2
호텔 대실
bingual
2024. 3. 7. 02:08
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/155651
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
- 배열은 입실 시간을 기준으로 오름차 정렬하며 입실, 퇴실 시간은 계산하기 편하게 시간을 분 단위로 변환한다.
- 입실 시간이 퇴실 시간 + 청소 시간보다 크거나 같다면 해당 방을 청소한 뒤 예약 해주며 그렇지 않다면 새로운 방으로 예약해준다. 이때 해당 방의 다음 이용가능한 시간을 미리 퇴실 시간 + 청소 시간으로 갱신 해주는게 중요하다.
from collections import defaultdict
def solution(book_time):
room = defaultdict(int)
for i, time in enumerate(sorted(book_time)):
start = convert(time[0])
end = convert(time[1])
assigned = False
for j, check_out in room.items():
if check_out <= start:
room[j] = end + 10
assigned = True
break
if not assigned:
room[i] = end + 10
return len(room)
def convert(time):
h, m = time.split(":")
return int(h) * 60 + int(m)