If there were two calls in day, for example - 4500 and 1800, How do calc bill?
4500/60 + 1500/60 + (1800-1500)/60= 75 + 25 + 5*2 = 110, is it correct?
My code:
def total_cost(bills):
bill_dict={}
for days in bills:
days=days.split(" ")
if days[0] in bill_dict.keys():
bill_dict[days[0]].append(days[2])
else:
bill_dict[days[0]]=[days[2]]
print(bill_dict)
answer=0
for key in bill_dict.keys():
money_day=0
duration_day=0
for duration in bill_dict[key]:
if duration_day+int(duration) <=6000:
money_day+=int(duration)//60 + min(1,int(duration)%60)
# print(money_day)
if duration_day + int(duration) > 6000:
cache=max(0,6000 - duration_day)
money_day+=cache//60
money_day+=(int(duration)-cache)//60 * 2 + 2*min(1,(int(duration)-cache)%60)
#print(int(duration),money_day,cache)
duration_day+=int(duration)
print(key,duration_day,bill_dict[key], money_day)
bill_dict[key].append(money_day)
answer+=money_day
print(answer,bill_dict)
return answer
I fail on test: total_cost(["2054-07-17 10:21:08 1958","2054-07-17 16:17:18 1388","2054-07-18 00:30:57 729","2054-07-18 03:55:30 4970","2054-07-18 23:10:05 5397","2054-07-19 16:37:31 5894","2054-07-20 11:21:10 2537","2054-07-20 17:09:49 4398","2054-07-21 04:17:34 2839","2054-07-21 06:23:25 6229","2054-07-21 10:21:01 4540","2054-07-21 22:10:46 5599","2054-07-22 11:26:43 6199","2054-07-23 02:02:52 818","2054-07-23 14:30:19 3244","2054-07-23 20:46:25 380","2054-07-24 08:41:40 4774","2054-07-24 23:33:14 5206","2054-07-25 08:47:44 3848","2054-07-25 11:32:40 694","2054-07-25 18:28:25 5974","2054-07-26 09:24:52 4550","2054-07-26 13:06:07 6637","2054-07-27 09:03:40 177","2054-07-27 13:11:42 5736","2054-07-27 15:53:26 5698","2054-07-28 09:51:43 1996","2054-07-28 14:03:30 432"])
My answer - 2378
Created at: 2020/05/15 20:34; Updated at: 2020/05/16 02:56
The question is resolved.