[프로그래머스] 호텔대실 (파이썬)

dongEon·2023년 3월 30일
0

난이도 : LV2

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/155651

문제해결

  • 우선 시간들을 초단위로 변경후 계산해야한다고 생각.
  • 입실시간을 기준으로 오름차순 정렬.
  • 가장 빠른 퇴실 시간을 기준으로 방을 비워야하므로 힙에 퇴실시간을 담는다.
  • 가장 빠른퇴실 시간이 입실시간보다 늦으면 힙에 추가한다.
  • 힙의 길이는 방의 갯수 이므로 매 순회마다(예약마다) 최대의 힙길이를 구해서 저장.

소스코드

import heapq

def solution(book_time):
    
    book = []
    h = []
    for s,e in book_time:
        book.append([int(s.split(':')[0]) * 60 + int(s.split(':')[1]),
        int(e.split(':')[0]) * 60 + int(e.split(':')[1]) + 10])
    
    book.sort(key=lambda x:x[0])
    maxVal = 0

    for i in book:
        while h:
            if h[0] <= i[0]: #만약 퇴실 시간이 입실시간 보다 빠르면 방을 비운다.
                heapq.heappop(h)
            else:
                break
        heapq.heappush(h, i[1])
        
        maxVal = max(len(h), maxVal)

    return maxVal
   
profile
반갑습니다! 알고리즘 문제 풀이 정리 블로그 입니다. 피드백은 언제나 환영입니다!

0개의 댓글