Algorithm

[카카오 코테 2022 | python] 주차 요금 계산

삐롱K 2025. 6. 24. 09:16

 

Q1) 문제를 어떻게 이해했나요?
A1)
입력 → fees: [기본 시간, 기본 요금, 단위 시간, 단위 요금],  records: "HH:MM 차량번호 IN/OUT" 형태의 리스트
출력 → 차량 번호 오름차순으로, 각각의 최종 주차 요금 리스트 반환

규칙 → 입차 후 출차 기록이 없으면 23:59에 출차된 것으로 간주, 누적 주차 시간 계산 후: 기본시간 이하면 기본요금, 초과시간은 단위시간으로 올림 계산하여 요금 부과
Q2) 문제를 어떻게 풀 예정인가요?
A2)
단계 1: 문자열을 분리해서 시각/차량번호/상태로 파싱
단계 2: 입차 시각은 저장하고, 출차 시 총 누적 시간을 저장
단계 3: 입차만 하고 출차 안 된 차량은 23:59 출차로 간주
단계 4: 차량 번호를 기준으로 정렬 후 요금 계산

 

from math import ceil
from collections import defaultdict

def time_to_minutes(t):
    h, m = map(int, t.split(":"))
    return h * 60 + m

def solution(fees, records):
    basic_time, basic_fee, unit_time, unit_fee = fees
    in_record = dict()
    total_time = defaultdict(int)

    for record in records:
        time, number, status = record.split()
        time = time_to_minutes(time)

        if status == "IN":
            in_record[number] = time
        else:  # "OUT"
            in_time = in_record.pop(number)
            total_time[number] += time - in_time

    # 출차 기록 없는 차량 처리
    for number, in_time in in_record.items():
        total_time[number] += time_to_minutes("23:59") - in_time

    result = []
    for number in sorted(total_time.keys()):
        t = total_time[number]
        if t <= basic_time:
            result.append(basic_fee)
        else:
            extra = ceil((t - basic_time) / unit_time)
            result.append(basic_fee + extra * unit_fee)

    return result

 

[추천 강의]

https://inf.run/7TU84

 

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의

현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,

www.inflearn.com

 

https://inf.run/jzapB

 

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인

현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.

www.inflearn.com

 

728x90
반응형