반응형
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)
'프로그래머스 > lv.2' 카테고리의 다른 글
[3차] 방금그곡 (0) | 2024.03.08 |
---|---|
무인도 여행 (1) | 2024.03.07 |
전력망을 둘로 나누기 (0) | 2024.03.06 |
마법의 엘리베이터 (0) | 2024.03.04 |
124 나라의 숫자 (0) | 2024.03.03 |