[프로그래머스 LV2] 주차 요금 계산

Junyoung Park·2022년 1월 22일
0

코딩테스트

목록 보기
46/631

1. 문제 설명

주차 요금 계산

2. 문제 분석

IN/OUT을 확인, 차량별 총 주차 시간을 구한 뒤, 번호가 낮은 순서대로 요금을 구한 뒤 그대로 return한다. 로직은 간단하지만 문자열을 가공하고 옮긴 뒤 조작하는 게 관건. 파이썬 3.0의 딕셔너리가 defaultdict인 까닭에 다른 어려움 없이 순서대로 in/out을 넣고 출력하면 된다. 만일 records 기록이 섞여 있다면 cars 딕셔너리의 car를 시간대로 sort한 뒤 사용하면 된다.

3. 나의 풀이

import math

def get_fee(fee, total):
    if total <= fee[0]: return fee[1]
    else:
        return fee[1] + math.ceil((total - fee[0])/fee[2])*fee[3]

def solution(fee, records):
    cars = {}
    for record in records:
        time, number, check = record.split()
        info = cars.get(number)
        if info:
            info = info + [[time, check]]
        else: info = [[time, check]]
        cars[number] = info
    result = []
    for car in sorted(cars.keys()):
        total = 0
        time_in = 0
        time_out = 0
        for time, check in cars[car]:
            if check == 'IN':
                hour, min = time.split(':')
                time_in = int(hour) * 60 + int(min)
            else:
                hour, min = time.split(':')
                time_out = int(hour) * 60 + int(min)
                total += time_out - time_in
        if cars[car][-1][1] == 'IN':
            total += 23*60 + 59 - time_in

        result.append(get_fee(fee, total))
    return result
profile
JUST DO IT

0개의 댓글