https://programmers.co.kr/learn/courses/30/lessons/92341
시간은 항상 커지고, 입차한 시각은 출차한 시각보다 무조건 작으며, out만 있는 경우는 없으니까 IN
일경우 time을 빼고, OUT
일 경우 time을 더하면 됩니다.
마지막 결과값이 0 이하일 경우 OUT
이 없었다는 의미이므로 23시 59분 만큼 더해줍니다.
결과값은 ceil
함수를 이용해 문제에있는 식처럼 계산하고 답을 리턴
from collections import defaultdict
from math import ceil
def solution(fees, records):
dic = defaultdict(int)
for i in records:
time, car, status = i.split()
time = int(time[:2])*60+int(time[-2:])
if status == 'IN':
dic[car] -= time
else:
dic[car] += time
for k,v in dic.items():
fee = v+(23*60+59) if v<=0 else v
total = fees[1] + ceil((fee-fees[0])/fees[2]) * fees[3]
dic[k] = fees[1] if total < fees[1] else total
return [v for k,v in sorted(dic.items())]