[프로그래머스] 호텔 대실(python)

Jinho Jang·2023년 7월 2일
0

문제

문제 설명

  • HH:MM, HH:MM 형태로 입실 시간과 퇴실 시간이 주어진다.
  • 퇴실 후 10분 정도 텀이 존재
  • 주어진 시간대가 겹치지 않도록 방을 운영하려고 한다면 필요한 방의 최소값을 구하는 문제

풀이

  • HH:MM 시간을 => 숫자로 변환 => hour * 60 + minute
  • 최소힙을 이용해서 입실 시간이 빠른 순대로 원소를 뽑아 시간대를 비교하며 카운트
import heapq

def time_transform(string):
    hour, minute = string.split(":")
    return int(hour) * 60 + int(minute)


def solution(book_time):
    answer = 0
    q = []
    hotel = []
    heapq.heapify(q)
    for start, end in book_time:
        start, end = time_transform(start), time_transform(end)
        heapq.heappush(q, (start, end))
    while q:
        s, e = heapq.heappop(q)
        if not hotel:
            hotel.append(e)
        else:
            l = len(hotel)
            for i in range(l):
                if hotel[i]+10<=s:
                    hotel[i] = e
                    break
            else:
                hotel.append(e)
    return len(hotel)       

0개의 댓글