簡単 0件解決済み 正答率0%

車両の通行料

バイク、車、トラックに通行料金を課し、トラックは車の基本ルールに軸数の追加料金を加えます。

このチャレンジで学べること

  • 親クラスのルールをサブクラスで再利用する
  • 基本料金に追加料金を上乗せする
  • 説明から正しいクラスを選ぶ

問題

原文(英語)を表示

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用に調整されています。上記の説明と制約に従ってください。

他の人の解答から学ぶ

コミュニティの解答

まだ公開された解答がありません。この課題を解いて最初の解答を共有しましょう。