coding test

[파이썬] 호텔 대실

잔망루피 2023. 4. 10. 19:22

🌿 나의 풀이

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형

'coding test' 카테고리의 다른 글

[파이썬, Java] 호텔 방 배정  (0) 2023.04.11
[파이썬] 부대복귀  (0) 2023.04.11
[파이썬] 과제 진행하기  (0) 2023.04.05
[파이썬, Java] 택배 배달과 수거하기  (0) 2023.04.02
[파이썬] 디펜스 게임  (0) 2023.04.01