https://school.programmers.co.kr/learn/courses/30/lessons/92341
dict를 통해 각 번호마다 입차, 출차 시간을 추가한다.
다른 기록없이 시간만 추가하는 이유는 기본적으로 차량은 입차->출차 순으로 기록되기에 정상적으로 입력된 경우 짝수의 길이를 가진다.
만약 출차를 하지 않은 경우 길이가 홀수라 마지막에 23*60+59를 추가한다.
입 -> 출차 순서라 짝수 - 홀수를 하면 주차장 이용 시간이 나옴
from collections import defaultdict
import math
def solution(fees, records):
answer = []
# fees = [기본 시간, 기본 요금, 시간 단위, 단위 요금]
# 출차 기록이 없으면 23:59분
# in, out이 정상이면 짝수의 길이 + 홀수는 in, 짝수는 out
info = defaultdict(list)
for r in records:
t, i , e = r.split(" ")
time = int(t[:2])*60 + int(t[3:])
info[i].append(time)
for i in sorted(info.keys()):
if len(info[i]) %2 == 1:
info[i].append(23*60+59)
s = 0
for idx, v in enumerate(info[i]):
if idx % 2 == 0: s -= v
else: s+= v
if s > fees[0]:
answer.append(fees[1] + math.ceil((s-fees[0])/fees[2])*fees[3])
else :
answer.append(fees[1])
return answer