🌿 나의 풀이
import heapq
def solution(book_time):
answer = 0
room = []
book_time = sorted(book_time, key = lambda x : x[0])
for s, e in book_time :
start_time = int(s[:2]) * 60 + int(s[3:])
end_time = int(e[:2]) * 60 + int(e[3:]) + 10
heapq.heappush(room, end_time)
while room and room[0] <= start_time :
heapq.heappop(room)
answer = max(answer, len(room))
return answer # 최소 객실의 수
대실 시작 시각이 빠른 순서로 정렬하고 시작한다.
힙에 청소 시간 10분을 포함한 종료 시각을 넣는다.
가장 빠른 대실 종료 시각 <= 현재 대실 시작 시각이라면, 힙에서 방을 뺀다.
🥕 다른 사람 풀이
def solution(book_time) :
time_table = [0 for _ in range(60 * 24)]
for start, end in book_time :
start_minutes = 60 * int(start[:2]) + int(start[3:])
end_minutes = 60 * int(end[:2]) + int(end[3:]) + 10
if end_minutes > 60 * 24 - 1 :
end_minutes = 60 * 24 - 1
for i in range(start_minutes, end_minutes) :
time_table[i] += 1
return max(time_table)
대실 시작부터 청소까지 끝날 때까지 배열에 기록한다.
가장 큰수를 반환
문제 출처 👇
https://school.programmers.co.kr/learn/courses/30/lessons/155651
반응형
'coding test' 카테고리의 다른 글
[파이썬, Java] 호텔 방 배정 (0) | 2023.04.11 |
---|---|
[파이썬] 부대복귀 (0) | 2023.04.11 |
[파이썬] 과제 진행하기 (0) | 2023.04.05 |
[파이썬, Java] 택배 배달과 수거하기 (0) | 2023.04.02 |
[파이썬] 디펜스 게임 (0) | 2023.04.01 |