본문 바로가기
알고리즘 문제 풀이/Programmers

[24회차] 주차 요금 계산

by 중앙백 2022. 1. 16.

Programmers Level.2 주차 요금 계산

import math


def solution(fees, records):
    default_time, default_cost, unit_time, unit_cost = fees # 기본시간, 기본요금, 단위시간, 단위요금
    array1 = dict() # 차량번호, 누적 시간
    array2 = dict() # 차량번호, 입차 시각
    for record in records:
        time, num, action = record.split() # 시간, 차량번호, 내역
        time = int(time[0:2]) * 60 + int(time[3:])
        num = int(num)
        if num not in array1.keys():
            array1[num] = 0
        if action == 'IN':
            array2[num] = time
        if action == 'OUT':
            array1[num] += time - array2[num]
            del(array2[num])
    if array2: # 출차하지 않은 차량이 있는 경우
        for i in array2.keys():
            array1[i] += 23 * 60 + 59 - array2[i]
    array1 = list(array1.items())
    array1 = sorted(array1) # 차량 번호 순으로 정렬
    answer = []
    for a in array1:
        if a[1] <= default_time: # 기본 시간 이하일 경우
            answer.append(default_cost)
        else: # 기본 시간 초과일 경우
            answer.append(default_cost + math.ceil((a[1] - default_time)/unit_time) * unit_cost)
    return answer

 - 누적 시간을 담는 dict 자료형과 입차 시각을 담는 dict 자료형, 두 가지를 사용했다.

 - 그래야만 출차되지 않은 차량을 계산할 수 있다고 생각.

 - 차량 번호 순으로 정렬하기 위해 dict자료형을 list로 바꾼 후 list[0]을 기준으로 오름차순 정렬

댓글