กลับไปยังโจทย์
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

ค่าผ่านทางของยานพาหนะ

เก็บค่าผ่านทางสำหรับ motorbike, car และ truck โดยที่ truck ขยายกฎพื้นฐานของ vehicle ด้วยจำนวนเพลา

สิ่งที่คุณจะได้เรียนรู้

  • ใช้กฎของคลาสแม่ซ้ำในคลาสลูก
  • บวกค่าเพิ่มบนอัตราพื้นฐาน
  • เลือกคลาสที่ถูกต้องจากคำอธิบาย

โจทย์

ด้วย inheritance คลาสลูกจะใช้พฤติกรรมของคลาสแม่ซ้ำและเพิ่มของตัวเองเข้าไป รถทุกคันต้องจ่ายค่าผ่านทาง; truck คือ vehicle ที่จ่ายเพิ่มตามจำนวน axles ของมัน

รถแต่ละคันเป็นหนึ่งใน:

  • motorbike: จ่าย 2.
  • car: จ่าย 5.
  • truck <axles>: จ่ายอัตราของ car 5 บวกเพิ่ม 3 สำหรับทุก axle ที่เกินสองอันแรก

Implement vehicle_tolls(vehicles).

อินพุต

vehicles: The vehicles passing the toll gate.

เอาต์พุต

Return the total toll collected.

เงื่อนไข

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 เพลาจ่ายแค่อัตรารถยนต์ 5 รถบรรทุก 3 เพลาจ่าย 5 + 3 = 8 รวม 13

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

เริ่มจากอัตรารถยนต์ 5 แล้วปรับตามชนิดรถ

คำใบ้ 2

รถบรรทุกจ่ายเพิ่มเฉพาะเพลาที่เกินสองเพลาแรก

คำใบ้ 3

มอเตอร์ไซค์ override กฎพื้นฐานด้วยค่าคงที่ 2

ความซับซ้อนที่คาดหวัง

เวลา O(จำนวนยานพาหนะ), หน่วยความจำเพิ่ม O(1)

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก