1. 문제
https://programmers.co.kr/learn/courses/30/lessons/92341
2. 코드
import math
def calc_time(in_time,out_time):
in_time_list = in_time.split(":")
out_time_list = out_time.split(":")
in_time_to_min = int(in_time_list[0]) * 60 + int(in_time_list[1])
out_time_to_min = int(wout_time_list[0]) * 60 + int(out_time_list[1])
return out_time_to_min - in_time_to_min
def calc_fee(time, fees):
if time > fees[0]:
# 소숫점 올림으로 계산 : math.ceil
return fees[1] + ((math.ceil((time - fees[0]) / float(fees[2]))) * fees[3])
else:
return fees[1]
def solution(fees, records):
answer = []
time_list = []
time_dict = {}
for i in records:
i_list = i.split(" ")
if i_list[2] == "IN":
element = []
element.append(i_list[1])
element.append(i_list[0])
element.append("23:59")
time_list.append(element)
else :
for j in time_list:
if j[0] == i_list[1]:
time = calc_time(j[1],i_list[0])
time_list.remove(j)
if time_dict.get(j[0]) == None:
time_dict[j[0]] = time
else:
value = time_dict[j[0]]
time_dict[j[0]] = value + time
else: continue
for i in time_list:
time = calc_time(i[1],i[2])
if time_dict.get(i[0]) == None:
time_dict[i[0]] = time
else:
value = time_dict[i[0]]
time_dict[i[0]] = value + time
time_dict = sorted(time_dict.items())
for i in time_dict:
answer.append(calc_fee(i[1],fees))
return answer
'ALGORITHM > Kakao' 카테고리의 다른 글
[Python] 양궁대회 (0) | 2022.03.08 |
---|---|
[Python] k진수에서 소수 개수 구하기 (0) | 2022.03.08 |
[Python] 뉴스 클러스터링 (0) | 2022.01.07 |
[Python] 다트 게임 (0) | 2022.01.04 |
[Python] 2개 이하로 다른 비트 (0) | 2021.10.09 |