[프로그래머스_92341] 주차 요금 계산 Python 풀이
출처: 프로그래머스
문제
풀이
입차할때 시간을 넣어주고 출차할때는 pop해주어 나온값을 출차시간에서 빼서 다시 넣어주었습니다. 입차만 하고 출차하지 않은 차는 status_dict으로 확인해주어 예외처리해주었습니다.
코드
from collections import defaultdict
def convert(s):
hr, mn = s.split(":")
return int(hr)*60+int(mn)
def calc_fee(fees, t):
if t <= fees[0]:
return fees[1]
fee = fees[1] +((t-fees[0])//fees[2]) * fees[3]
return fee + fees[3] if (t-fees[0])%fees[2] else fee
def solution(fees, records):
cumul_time = defaultdict(list)
status_dict = dict()
result = []
for rcd in records:
time, car_num, status = rcd.split()
if status == "IN":
cumul_time[car_num].append(convert(time))
status_dict[car_num] = 1
else:
cumul_time[car_num].append(convert(time)-cumul_time[car_num].pop())
status_dict[car_num] = 0
for car in cumul_time.keys():
if status_dict[car]:
cumul_time[car].append(convert("23:59")-cumul_time[car].pop())
status_dict[car] = 0
result.append((car, calc_fee(fees, sum(cumul_time[car]))))
result.sort()
return [res[1] for res in result]
Leave a comment