from collections import defaultdict
import math

def time_to_minutes(time):
    time = time.split(':')
    return 60*int(time[0]) + int(time[1])

def solution(fees, records):
    cars = defaultdict(list)
    answer = []
    for record in records:
        record = record.split()
        time = time_to_minutes(record[0])
        cars[int(record[1])].append(time)

    for num in sorted(cars.keys()):
        if len(cars[num])%2 != 0:
            cars[num].append(1439)
        sum_time = 0
        fee = fees[1]
        for i in range(len(cars[num])-1,-1,-2):
            sum_time += cars[num][i] - cars[num][i-1]
        if sum_time > fees[0]:
            fee += (math.ceil((sum_time-fees[0])/fees[2]))*fees[3]
        answer.append(fee)
    return answer

 

1. cars[차 번호] 에 IN,OUT 한 시간을 모두 넣어줍니다.

이때 시간은 HH:MM 형태이므로 정수로 바꿔서 넣어줍니다.

 

2. 차량번호가 작은 차부터 총 주차 시간을 구합니다.

만약 cars[num]의 길이가 홀수라면 23:59에 출차한 내역이 안들어가 있으므로 추가해줍니다.

 

3. 요금을 계산하고 answer 리스트에 추가해줍니다.

+ Recent posts