시작하는 중

프로그래머스 - 호텔 대실 본문

알고리즘/프로그래머스

프로그래머스 - 호텔 대실

싱욱 2023. 2. 5. 15:46

호텔의 예약 정보가 들어오고 정보를 바탕으로 대실이 몇개 필요할지 계산하는 문제

 

어떻게 풀어야할까?

 

처음에는 어렵게 생각해서 리스트 만들고 계속 검사하면서

기존 방들의 시간이 겹치면 리스트에 해당 예약 시작, 끝 정보를 담는 리스트를 추가하여

결국 2차원 리스트로 하려고 했는데

 

하다보니깐?? 그냥 구간합으로 풀면 되는 문제였다.

 

1. 길이가 60*24인 number 리스트를 만들고

2. 예약 정보에 대한 순회를 돌고

3. string 형태의 시간과 분을 파싱하고

4. 구간합을 하기 위해 시작과 끝 지점을 각각 1, -1로 마킹하고

5. 예약 정보 순회가 끝난 후 number_list를 돌면서 구간합을 하면 된다.

 

밑에는 코드에요.


def solution(book_time_list):
    answer = 0
    
    total_minute_list = list(0 for i in range(60*24))
    
    for book_time in book_time_list:
        start_m, start_s = map(int,book_time[0].split(":"))
        start_time = start_m * 60 + start_s
        
        end_m, end_s = map(int,book_time[1].split(":"))
        end_time = end_m * 60 + end_s
        
        if end_time + 10 < 60*24:
            end_time += 10
        else:
            end_time = 60*24 - 1
        
        total_minute_list[start_time] += 1
        total_minute_list[end_time] += -1
    
    
    for index in range(1,60*24):
        total_minute_list[index] += total_minute_list[index-1]
    
    answer = max(total_minute_list)
    
    return answer