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

เงินทอน: จำนวนน้อยสุดของเหรียญ

ทอนเงินโดยใช้เหรียญสหรัฐให้น้อยที่สุดเท่าที่จะเป็นไปได้

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

  • เลือกเหรียญที่ใหญ่ที่สุดก่อน
  • ใช้การหารและเศษเพื่อหาจำนวนเหรียญ
  • รู้ว่าเมื่อไรการทอนแบบละโมบจึงดีที่สุด

โจทย์

พนักงานแคชเชียร์จะทอนเงินโดยใช้เหรียญควอเตอร์ (25¢), ไดม์ (10¢), นิเกิล (5¢) และเพนนี (1¢) เสมอ โดยเลือกเหรียญที่มีมูลค่าสูงสุดที่ยังสามารถใช้ได้ จะทำให้ใช้เหรียญจำนวนน้อยที่สุดสำหรับจำนวนเงินเหล่านี้ คืนค่าจำนวนเหรียญที่ต้องใช้สำหรับ cents.

ให้เขียนฟังก์ชัน fewest_coins(cents)

อินพุต

cents: จำนวนเงินทอนที่ต้องการในหน่วยเซนต์

เอาต์พุต

คืนค่าจำนวนเหรียญที่น้อยที่สุด

เงื่อนไข

0 ≤ cents ≤ 1,000,000

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
cents = 41

ผลลัพธ์ที่คาดหวัง:
expected = 4
อินพุต:
long long cents = 41;

ผลลัพธ์ที่คาดหวัง:
long long expected = 4;
อินพุต:
long cents = 41;

ผลลัพธ์ที่คาดหวัง:
long expected = 4;

คำอธิบาย

หนึ่งควอเตอร์ (25), หนึ่งไดม์ (35), หนึ่งนิเกิล (40) และหนึ่งเพนนี (41): รวม 4 เหรียญ

ตัวอย่างที่ 2
อินพุต:
cents = 0

ผลลัพธ์ที่คาดหวัง:
expected = 0
อินพุต:
long long cents = 0;

ผลลัพธ์ที่คาดหวัง:
long long expected = 0;
อินพุต:
long cents = 0;

ผลลัพธ์ที่คาดหวัง:
long expected = 0;

คำอธิบาย

ไม่ต้องทอนเงิน: 0 เหรียญ

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

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

คำใบ้ 1

ใช้เหรียญที่มีมูลค่ามากที่สุดที่ใช้ได้ก่อน แล้วค่อยลดไปเหรียญที่เล็กลงตามจำนวนเงินที่เหลือ

คำใบ้ 2

ใช้การหารและหาเศษเพื่อให้นับเหรียญแต่ละชนิดได้อย่างมีประสิทธิภาพ

คำใบ้ 3

ระวังกรณีที่หารลงตัวพอดี จะได้ไม่เหลือเงินค้างโดยไม่ตั้งใจ

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

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

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

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

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

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

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