[PS] 주차 요금 계산

owo·2023년 1월 23일
0

PS

목록 보기
2/25

문제 링크

코드

import math


def time_to_minute(time):
    hour, minute = map(int, time.split(":"))
    return hour * 60 + minute


def solution(fees, records):
    parking = {}
    parking_time = {}
    
    for record in records:
        time, car, detail = record.split()
        if detail == "IN":
            parking[car] = time
        else:
            enter_time = parking.pop(car)
            if car in parking_time:
                parking_time[car] += time_to_minute(time) - time_to_minute(enter_time)       
            else:
                parking_time[car] = time_to_minute(time) - time_to_minute(enter_time)       
                
    LAST_TIME = "23:59"
    for car, time in parking.items():
        if car in parking_time:
            parking_time[car] += time_to_minute(LAST_TIME) - time_to_minute(time)       
        else:
            parking_time[car] = time_to_minute(LAST_TIME) - time_to_minute(time) 
    
    
    def calculate_fees(time):
        fee = fees[1]
        if time <= fees[0]:
            return fee
        
        time -= fees[0]
        return fee + int(math.ceil(time / fees[2])) * fees[3]
        
    return list(map(lambda x: calculate_fees(x[1]), sorted(parking_time.items())))

리뷰

단순한 구현문제였고 차분히 풀어서 쉽게 해결할 수 있었다. 파이썬 함수랑 라이브러리만 더 연습해서 사용하면 될 것 같다.

0개의 댓글