https://programmers.co.kr/learn/courses/30/lessons/92341#
from collections import defaultdict
import math
def out(s,e):
s = list(map(int,s.split(":")))
e = list(map(int,e.split(":")))
return e[1] - s[1] + (e[0] - s[0]) * 60
def solution(fees, records):
answer = []
dic = dict()
mdict = defaultdict(int)
for record in records:
time,car,status = record.split()
if status == "IN":
dic[car] = time
else:
mins = out(dic[car],time)
mdict[car] += mins
dic.pop(car)
for log in dic.items():
car, time = log
mins = out(time,"23:59")
mdict[car] += mins
for car, mins in sorted(mdict.items()):
if mins <= fees[0]:
answer.append(fees[1])
else:
charge = fees[1] + math.ceil((mins - fees[0]) / fees[2])*fees[3]
answer.append(charge)
return answer
문제에 요금을 반올림 하라는 조건이 명시되어있어서 math.ceil()을 이용했다.
defaultdict를 통해 요금을 쉽게 저장할 수 있었다.
사용이 익숙하지 않지만 굉장히 유용한 기능인듯 하다.