โจทย์
ด้วย 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
ตัวอย่าง
อินพุต:
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.
อินพุต:
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 กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน