fromcollectionsimportdequeimportmathimportcopydefsolution(fees,records):answer=[]queue=[]forrinrecords:a,b,c=r.split()queue.append([a,b,c])# 차번호, 시간 순으로 정렬
queue=deque(sorted(queue,key=lambdax:(x[1],x[0])))dictReport={}whilequeue:time,car,status=queue.popleft()iflen(queue)==0:next_time,next_car,next_status='23:59',copy.copy(car),'last'else:next_time,next_car,next_status=queue.popleft()ifcarnotindictReport.keys():total=0dictReport[car]=total# 시간 계산
ifcar==next_carandstatus!=next_status:total+=(int(next_time.split(':')[0])-int(time.split(':')[0]))*60+(int(next_time.split(':')[1])-int(time.split(':')[1]))else:total+=(23-int(time.split(':')[0]))*60+(59-int(time.split(':')[1]))queue.appendleft([next_time,next_car,next_status])# 비용 계산
cost=int(fees[1]+(math.ceil((total-fees[0])/fees[2]))*fees[3])# 기본요금 보다 작게 나올 경우에도 기본요금 부과
ifcost<fees[1]:cost=fees[1]dictReport[car]=costanswer=list(dictReport.values())returnanswer