[프로그래머스] 주차 요금 계산 문제풀이 python

mauz·2022년 6월 30일
0
post-custom-banner

🐒 문제

https://programmers.co.kr/learn/courses/30/lessons/92341#

✍ 나의 풀이

from collections import defaultdict
import math

def out(s,e):
    s = list(map(int,s.split(":")))
    e = list(map(int,e.split(":")))
    
    return e[1] - s[1] + (e[0] - s[0]) * 60
    
def solution(fees, records):
    answer = []
    dic = dict()
    mdict = defaultdict(int)
    
    for record in records:
        time,car,status = record.split()
        if status == "IN":
            dic[car] = time
        else:
            mins = out(dic[car],time)
            mdict[car] += mins
            dic.pop(car)
            
    for log in dic.items():
        car, time = log
        mins = out(time,"23:59")
        mdict[car] += mins
    
    for car, mins in sorted(mdict.items()):
        if mins <= fees[0]:
            answer.append(fees[1])
        else:
            charge = fees[1] + math.ceil((mins - fees[0]) / fees[2])*fees[3]
            answer.append(charge)
                
    return answer

문제에 요금을 반올림 하라는 조건이 명시되어있어서 math.ceil()을 이용했다.

defaultdict를 통해 요금을 쉽게 저장할 수 있었다.
사용이 익숙하지 않지만 굉장히 유용한 기능인듯 하다.

profile
쥐구멍에 볕드는 날
post-custom-banner

0개의 댓글