[프로그래머스] 주차 요금 계산 : 파이썬 Python

0

Problem Solving

목록 보기
18/49
post-thumbnail

문제

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

풀이

시간은 항상 커지고, 입차한 시각은 출차한 시각보다 무조건 작으며, out만 있는 경우는 없으니까 IN 일경우 time을 빼고, OUT일 경우 time을 더하면 됩니다.
마지막 결과값이 0 이하일 경우 OUT이 없었다는 의미이므로 23시 59분 만큼 더해줍니다.
결과값은 ceil 함수를 이용해 문제에있는 식처럼 계산하고 답을 리턴

from collections import defaultdict
from math import ceil
def solution(fees, records):

    dic = defaultdict(int)
    
    for i in records:
        time, car, status = i.split()
        time = int(time[:2])*60+int(time[-2:])
        if status == 'IN':
            dic[car] -= time
        else:
            dic[car] += time
            
    for k,v in dic.items():
        fee = v+(23*60+59) if v<=0 else v
        total = fees[1] + ceil((fee-fees[0])/fees[2]) * fees[3]
        dic[k] = fees[1] if total < fees[1] else total
        
    return [v for k,v in sorted(dic.items())]

0개의 댓글