문제
https://school.programmers.co.kr/learn/courses/30/lessons/92341
import math
def solution(fees, records):
cars = []
for i in records:
time , num, d = i.split(" ")
cars.append(num)
cars = list(set(cars))
cars.sort()
answer = [0 for _ in range(len(cars))]
for c in range(len(cars)):
come = -1
for i in records:
time , num, d = i.split(" ")
t, m = map(int, time.split(":"))
if num == cars[c] and come == -1:
print(t, m)
come = t * 60 + m
continue
if num == cars[c] and come != -1:
answer[c] += t*60 +m - come
come = -1
if come != -1 :
answer[c] += (23*60 + 59 - come)
min_time, min_fee , plus_time, plus_fee = fees
print(answer)
for i in range(len(answer)):
k = answer[i]
if k - min_time <= 0:
answer[i] = min_fee
else:
pf = math.ceil((k-min_time)/plus_time) * plus_fee
answer[i] = pf + min_fee
return answer
구현, 문자열 파싱 문제였다. 풀이 방법 자체는 문제를 읽으면서 빠르게 생각났고 문제 자체에서 연산하는 방법도 명확하게 표현되어있어 그대로 구현하면 되는 문제였다.
math.ceil()을 사용해서 올림을 해서 초과한 요금을 계산하였다.