일단, 어려운 로직은 없다. 고려해야 할 것들이 많을 뿐.
if car == records's car
if car is IN
IN_hour, IN_minute
if car is OUT
OUT_hour - IN_hour, OUT_minute - IN_minute
minutes += 시간 * 60 + 분
23 - hour
59 - minute
import math
def solution(fees, records):
answer = []
cars = []
for record in records:
cars.append(record[6:10])
cars = list(set(cars))
cars.sort()
out = False
while cars:
minutes = 0
for i in range(len(records)):
if records[i][6:10] == cars[0]:
if records[i][11:] == 'IN':
hour, minute = int(records[i][:2]), int(records[i][3:5])
out = False
elif records[i][11:] == 'OUT':
hour = int(records[i][:2]) - hour
minute = int(records[i][3:5]) - minute
# 음수되는 경우
if minute < 0:
minute += 60
hour -= 1
out = True
if out:
minutes += (hour * 60) + minute
# 들어왔지만 나가지 않은 경우
if not out:
hour = 23 - hour
minute = 59 - minute
minutes += (hour * 60) + minute
# 이용시간이 기본 시간보다 적은 경우
if minutes <= fees[0]:
answer.append(fees[1])
# 더 많은 경우
else:
result = fees[1] + math.ceil(((minutes - fees[0]) / fees[2])) * fees[3]
answer.append(result)
cars.pop(0)
return answer