풀이 방법
- 차가 들어오고 나갈때마다 다른 defaultdict에 누적시간을 더해준다.
- 나감 처리를 안한 차가 있을수도 있으니, 나간 차는 dict에서 삭제한다.
- 모든 처리를 하고, 남아있는 차가 있으면 23:59분에 나감으로 시간을 누적시켜준다.
- 누적되어 있는 시간을 기준으로 기본 시간을 넘은 차는 기본요금으로, 넘지 않은 차는 기본 요금 + 분당 요금 계산을 해준다.
풀이 코드
import math
from collections import defaultdict
def solution(fees, records):
answer = defaultdict(int)
basic_time = int(fees[0])
basic_money = int(fees[1])
minute_per = int(fees[2])
minute_per_money = int(fees[3])
record = dict()
for rec in records:
time, car_num, flag = rec.split()
if flag == "IN":
record[car_num] = time
else:
in_hour, in_minute = record[car_num].split(":")
out_hour, out_minute = time.split(":")
total_min = (int(out_hour) * 60 + int(out_minute)) - (int(in_hour) * 60 + int(in_minute))
answer[car_num] += total_min
del record[car_num]
if len(record):
for car_num, time in record.items():
hour, minute = time.split(":")
total_min = 1439 - (int(hour) * 60 + int(minute))
answer[car_num] += total_min
answer = dict(sorted(answer.items()))
result = []
for total_min in answer.values():
if total_min > basic_time:
fee = basic_money + math.ceil((total_min - basic_time) / minute_per) * minute_per_money
result.append(fee)
else:
result.append(basic_money)
return result