728x90
반응형
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
728x90
반응형
'Algorithm' 카테고리의 다른 글
[카카오 코테 2018 | python] 파일명 정렬 (0) | 2025.06.23 |
---|---|
[카카오 코테 2019 | python] 인턴십크레인 인형뽑기 게임 ✅ (1) | 2025.06.23 |
[백준 15649 | python] N과 M (1) (백트레킹) (0) | 2025.06.21 |
[카카오 코테 2018 | python] 비밀지도 (0) | 2025.06.19 |
[카카오 코테 2018 | python] [1차] 다트 게임 (0) | 2025.06.19 |