[プログラマー]駐車料金の計算
📩 -->問題の説明
駐車場の料金表と車両進入(入)出(出)記録の場合、車両別に駐車料金を計算したいです.次に例を示します.
せいげんじょうけん
I/O例
feesrecordsresult[180, 5000, 10, 600]["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"][14600, 34400, 5000][120, 0, 60, 591]["16:00 3961 IN","16:00 0202 IN","18:00 3961 OUT","18:00 0202 OUT","23:58 3961 IN"][0, 591][1, 461, 1, 10]["00:00 1234 IN"][14841]
💡 ソリューション(使用言語:python)
import math
def solution(fees, records):
basic_minute = fees[0]
basic_fee = fees[1]
minute = fees[2]
unit = fees[3]
car = list(set(map(lambda x: x.split()[1], records)))
total_fees = {k : 0 for k in car}
check = {}
for record in records:
tmp = record.split(' ')
if tmp[1] not in check.keys():
check[tmp[1]]= tmp[0]
else:
if tmp[-1] == 'OUT':
out_time = int(tmp[0].split(':')[0]) * 60 + int(tmp[0].split(':')[1])
in_time = int(check[tmp[1]].split(':')[0]) * 60 + int(check[tmp[1]].split(':')[1])
total_fees[tmp[1]] = total_fees[tmp[1]] + out_time - in_time
del check[tmp[1]]
if check:
for i in check.keys():
out_time = 1439
in_time = int(check[i].split(':')[0]) * 60 + int(check[i].split(':')[1])
total_fees[i] = total_fees[i] + out_time - in_time
result = []
for i in total_fees.items():
if i[1] <= basic_minute :
result.append((i[0], basic_fee))
else:
result.append((i[0], basic_fee + (math.ceil((i[1] - basic_minute) / minute) * unit)))
return list(map(lambda x: x[1], sorted(result)))
👉 説明:
total_fees
ディックシリーズを作成しています.['05:34', '5961', 'IN']
IN
であるため、tmp[1]をキーとしてその値をtmp[0]に追加する.OUT
であるため、時間差はtotal_fees
のtmp[1]をキーとする値で既存値に加えられる.total_fees[tmp[1]] = total_fees[tmp[1]] + out_time - in_time
total_fees
の値に1439(total_fees
)-In timeから減算した値を加算する.🌈 に感銘を与える
今年出た温熱問題なので、解決する人はまだ少ないようです.もっと親切に説明する習慣を身につけるべきだと思います!
ソース:プログラマ
間違いがあればメッセージをお願いします🙂
Reference
この問題について([プログラマー]駐車料金の計算), 我々は、より多くの情報をここで見つけました https://velog.io/@letgodchan0/프로그래머스-주차-요금-계산テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol