[programmers/py] 주차 요금 계산

승민·2024년 2월 18일

알고리즘

목록 보기
59/171

주차 요금 계산

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

문제 설명

풀이

dict를 통해 각 번호마다 입차, 출차 시간을 추가한다.
다른 기록없이 시간만 추가하는 이유는 기본적으로 차량은 입차->출차 순으로 기록되기에 정상적으로 입력된 경우 짝수의 길이를 가진다.

만약 출차를 하지 않은 경우 길이가 홀수라 마지막에 23*60+59를 추가한다.

입 -> 출차 순서라 짝수 - 홀수를 하면 주차장 이용 시간이 나옴

from collections import defaultdict
import math
def solution(fees, records):
    answer = []
    # fees = [기본 시간, 기본 요금, 시간 단위, 단위 요금]
    # 출차 기록이 없으면 23:59분
    # in, out이 정상이면 짝수의 길이 + 홀수는 in, 짝수는 out
    info = defaultdict(list)
    
    for r in records:
        t, i , e = r.split(" ")
        time = int(t[:2])*60 + int(t[3:])
        
        info[i].append(time)
    
    for i in sorted(info.keys()):
        if len(info[i]) %2 == 1:
            info[i].append(23*60+59)
        
        s = 0
        for idx, v in enumerate(info[i]):
            if idx % 2 == 0: s -= v
            else: s+= v
        if s > fees[0]:
            answer.append(fees[1] + math.ceil((s-fees[0])/fees[2])*fees[3])
        else :
            answer.append(fees[1])
        
    return answer

0개의 댓글