Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Lemonade Change ใน Python: ตรวจสอบการให้เงินทอนที่ขายเครื่องดื่ม

สมมติว่ามีร้านขายน้ำมะนาว ราคาแก้วละ 5 ดอลลาร์ ลูกค้าสิบคิวซื้อทีละคน คนละหนึ่งแก้ว จ่ายด้วยธนบัตร 5, 10 หรือ 20 ดอลลาร์ เราต้องให้เงินทอนถูกต้องให้ทุกคน โดยเริ่มต้นไม่มีเงินทอนเลย ตรวจสอบว่าเราสามารถให้เงินทอนถูกต้องได้ทุกคนหรือไม่

ตัวอย่าง

อินพุต [5,5,5,10,20] → ผลลัพธ์ True เพราะ ลูกค้า 3 คนแรกจ่าย 5 ดอลลาร์ ได้ธนบัตร 5 สามใบ คนที่ 4 จ่าย 10 ให้ทอน 5 คนที่ 5 จ่าย 20 ให้ทอน 10+5 ทุกคนได้ทอนครบ

ขั้นตอนการแก้ปัญหา

  1. นับจำนวนธนบัตรแต่ละประเภท: n5, n10, n20
  2. วนลูปผ่านแต่ละบิล:
    • ถ้าเป็น 5: เพิ่ม n5
    • ถ้าเป็น 10: เพิ่ม n10, ต้องมี n5 > 0 เพื่อให้ทอน 5 (ลด n5)
    • ถ้าเป็น 20: ให้ทอน 15 ดอลลาร์ โดย優先ใช้ 10+5 (ลด n10, n5) ถ้าไม่มี 10 ให้ใช้ 5 สามใบ (ต้องมี n5 >= 3)
    • ถ้าให้ทอนไม่ได้ → คืน False
  3. จบลูป → คืน True

การติดตั้งใน Python

class Solution:
    def lemonadeChange(self, bills):
        n5 = n10 = n20 = 0
        for bill in bills:
            if bill == 5:
                n5 += 1
            elif bill == 10:
                if n5 == 0:
                    return False
                n10 += 1
                n5 -= 1
            else:  # bill == 20
                if n10 > 0 and n5 > 0:
                    n10 -= 1
                    n5 -= 1
                elif n5 >= 3:
                    n5 -= 3
                else:
                    return False
        return True

ob = Solution()
print(ob.lemonadeChange([5,5,5,10,20]))  # True

อินพุต / เอาต์พุต

Input: [5,5,5,10,20]
Output: True