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

น้ำมะนาวเปลี่ยนใน Python


สมมติว่ามีร้านขายน้ำมะนาว น้ำมะนาวแต่ละขวดมีราคา 5 เหรียญ ตอนนี้ลูกค้าเข้าคิวซื้อของจากร้านแล้วสั่งทีละอย่าง

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

เราต้องตรวจสอบว่าเราสามารถให้การเปลี่ยนแปลงที่ถูกต้องแก่ลูกค้าทุกรายหรือไม่

ดังนั้น หากอินพุตเป็น [5,5,5,10,20] ผลลัพธ์จะเป็น True เนื่องจากลูกค้า 3 คนแรก เราจะได้รับตั๋วเงิน $5 สามใบตามลำดับ จากอันที่สี่ เรารวบรวมบิล 10 ดอลลาร์ และคืนเงิน 5 ดอลลาร์ หลังจากนั้น จากลูกค้าคนที่ห้า เราให้บิล $10 และ $5 บิล เมื่อลูกค้าทุกคนได้รับการแก้ไข เราให้ผลลัพธ์เป็น true

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • n5 :=0, n10 :=0, n20 :=0
  • สำหรับแต่ละ i ในตั๋วเงิน ทำ
    • ถ้าฉันเหมือนกับ 5 แล้ว
      • n5 :=n5 + 1
    • มิฉะนั้น เมื่อ i เท่ากับ 10 แล้ว
      • n10 :=n10 + 1
    • มิฉะนั้น n20 :=n20 + 1
    • ถ้าขนาดของบิล> 0 และ n5 เท่ากับ 0 แล้ว
      • คืนค่าเท็จ
    • ถ้าฉันเหมือนกับ 20 และ n10> 0 และ n5> 0 แล้ว
      • n10 :=n10 - 1
      • n5 :=n5 - 1
    • มิฉะนั้น เมื่อ i เท่ากับ 20 และ n10 เหมือนกับ 0 และ n5 <3 แล้ว
      • คืนค่าเท็จ
    • มิฉะนั้น เมื่อ i เท่ากับ 20 และ n10 เหมือนกับ 0 และ n5>=3 แล้ว
      • n5 :=n5 -3
    • ถ้าฉันเหมือนกับ 10 และ n5> 0 แล้ว
      • n5 :=n5 - 1
    • มิฉะนั้น เมื่อฉันเหมือนกับ 10 และ n5 เหมือนกับ 0 แล้ว
      • คืนค่าเท็จ
  • คืนค่า True

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def lemonadeChange(self, bills):
      n5 = 0
      n10 = 0
      n20 = 0
      for i in bills:
         if i == 5:
            n5 += 1
         elif i == 10:
            n10 += 1
         else:
            n20 += 1
         if len(bills) > 0 and n5 == 0:
            return(False)
         if i == 20 and n10 > 0 and n5 > 0:
            n10 -= 1
            n5 -= 1
         elif i == 20 and n10 == 0 and n5 < 3:
            return(False)
         elif i == 20 and n10 == 0 and n5 >= 3:
            n5 = n5 -3
         if i == 10 and n5 > 0:
            n5 -= 1
         elif i == 10 and n5 == 0:
            return (False)
      return(True)
ob = Solution()
print(ob.lemonadeChange([5,5,5,10,20]))

อินพุต

[5,5,5,10,20]

ผลลัพธ์

True