問題
inheritance では、subclass は親の behaviour を再利用し、自分のものを追加します。すべての vehicle は通行料金を支払います。truck は、軸に応じて追加料金を払う vehicle です。
各 vehicle は次のいずれかです。
motorbike: 2 を支払います。car: 5 を支払います。truck <axles>: car の料金 5 に加えて、最初の 2 軸を超える 1 軸ごとに 3 を支払います。
vehicle_tolls(vehicles) を実装してください。
入力
vehicles: 通行ゲートを通る vehicles です。
出力
合計の通行料金を返します。
制約
0 ≤ 車両の数 ≤ 100,000
2 ≤ 車軸の数 ≤ 10
例
例 1
入力:
vehicles = ["car", "motorbike", "truck 4"]
期待される出力:
expected = 18
入力:
std::vector<std::string> vehicles = {"car", "motorbike", "truck 4"};
期待される出力:
long long expected = 18;
入力:
string[] vehicles = new string[] {"car", "motorbike", "truck 4"};
期待される出力:
long expected = 18;
解説
5 + 2 + (5 + 3 × 2) = 18.
例 2
入力:
vehicles = ["truck 2", "truck 3"]
期待される出力:
expected = 13
入力:
std::vector<std::string> vehicles = {"truck 2", "truck 3"};
期待される出力:
long long expected = 13;
入力:
string[] vehicles = new string[] {"truck 2", "truck 3"};
期待される出力:
long expected = 13;
解説
2 軸の truck は car の料金 5 だけを支払います。3 軸の truck は 5 + 3 = 8 を支払います。合計 13 です。
解き方のヒント
まずは自分で考えてから、ヒントを 1 つずつ開いてみましょう。
ヒント 1
乗用車の料金 5 から始め、車種ごとに調整します。
ヒント 2
トラックは最初の 2 軸を超えた分だけ追加で払います。
ヒント 3
バイクは基本ルールを固定の 2 で上書きします。
目安の計算量
時間 O(車両の数)、追加メモリ O(1)
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。