[programmers/py] 호텔 대실

승민·2024년 3월 24일

알고리즘

목록 보기
88/171

호텔 대실

https://school.programmers.co.kr/learn/courses/30/lessons/155651

문제 설명

  • 한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다.
  • 예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요.

문제 풀이

import heapq
def solution(book_time):
    answer = 0
    books = []
    rooms = []
    for book in book_time:
        s, e = book
        sh, sm = s.split(":")
        eh, em = e.split(":")
        st, et = int(sh)*60+int(sm), int(eh) * 60 + int(em)
        heapq.heappush(books, [st, et]) # 시간 순으로 들어감
    
    while books:
        st, end = heapq.heappop(books)
        print(rooms)
        if not rooms:
            rooms.append([end, st]) # 마감순으로 빠짐
        else :
            now = heapq.heappop(rooms)
            
            if now[0] + 10 > st :
                heapq.heappush(rooms, now)
                heapq.heappush(rooms, [end, st])
            else :
                heapq.heappush(rooms, [end, st])

0개의 댓글