❗ 풀이 과정
- 입력값 records를 보고 주차장에 있던 시간
total_time
계산해주기
- 주차장에 아직 남아있는 차는 따로 정산해주기 (23:59에 나간것으로)
- total_time 딕셔너리를 car_num 오름차순으로 정렬해주기
- 정렬해준 total_time 딕셔너리를 토대로 정산해주기
🤜 풀이 코드
from math import ceil
def get_time(start_time,end_time):
s_hour,s_min=map(int,start_time.split(':'))
e_hour,e_min=map(int,end_time.split(':'))
if e_min<s_min:
return e_min-s_min+60+(e_hour-s_hour-1)*60
else:
return e_min-s_min+(e_hour-s_hour)*60
def solution(fees, records):
total_time = dict()
in_park= dict()
in_time= dict()
answer=[]
for r in records:
time,car_num,io = r.split()
if io=='IN':
in_park[car_num]=1
in_time[car_num]=time
else:
in_park[car_num]=0
total_time[car_num]=total_time.get(car_num,0)+get_time(in_time[car_num],time)
for car_num,is_in in in_park.items():
if is_in==1:
total_time[car_num]=total_time.get(car_num,0)+get_time(in_time[car_num],'23:59')
for i,time in sorted(total_time.items(),key=lambda x:x[0]):
if time<=fees[0]:
answer.append(fees[1])
else:
answer.append(fees[1]+ceil((time-fees[0])/fees[2])*fees[3])
return answer