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