https://school.programmers.co.kr/learn/courses/14760/lessons/125465
import math
def solution(fees, records):
    answer = []
    
    # 세 가지의 배열을 선언
    inTime = [0]*10000      # 들어온 시간
    isIn = [0]*10000        # 차량이 있는지 여부
    sumTime = [0]*10000     # 머무른 시간 저장
    
    for record in records:
        a, b, c = record.split(" ")     # a: 시각, b: 차량번호, c: IN/OUT
        h, m = a.split(":")     # 시간, 분을 저장
        
        if c == 'IN':
            inTime[int(b)] = 60*int(h)+int(m)
            isIn[int(b)] = 1
        else:       # c == 'OUT'
            sumTime[int(b)] += (int(h)*60+int(m)) - inTime[int(b)]
            isIn[int(b)] = 0
    
    for i in range(10000):      # 나가지 않은 차량에 대한 계산 실행
        if isIn[i] == 1:
            sumTime[i] += (23*60+59) - inTime[i]
            
    for x in range(10000):
        if sumTime[x] > 0:
            answer.append(fees[1]+max(math.ceil((sumTime[x]-fees[0])/fees[2]), 0)*fees[3])
            
            # 아래 코드를 위 코드 한 줄로 간략히 작성함
            # plusmoney = max(math.ceil((sumTime[x]-fees[0])/fees[2]), 0)*fees[3]
            # fee = fees[1]+plusmoney
            # answer.append(fee)
            
        
    return answer
# math.ceil() : 반올림 함수  => 사용을 위해 math 라이브러리를 import 함
# fees[0] : 기본 시간 (요금이 부과되지 않는 기본 시간)
# fees[1] : 기본 요금
# fees[2] : 단위 시간 (몇 분 단위로 추가 요금을 부과할 것인지)
# fees[3] : 단위 요금 (얼마 요금을 추가로 부과할 것인지)
실행 결과