সমস্যা বিবরণ
একটি লেমনেড স্ট্যান্ডে প্রতিটি গ্লাসের দাম $৫। গ্রাহকরা очередা দাঁড়িয়ে $৫, $১০ বা $২০ নোট দিয়ে কেনে। আপনার पास প্রাথমিকভাবে কোনো চেঞ্জ নেই। প্রতিটি গ্রাহককে সঠিক চেঞ্জ দিতে হবে যাতে নেট লেনদেন $৫ হয়। সব গ্রাহককে চেঞ্জ দেওয়া সম্ভব কিনা তা যাচাই করতে হবে।
উদাহরণ
ইনপুট: [5,5,5,10,20] → আউটপুট: True
ব্যাখ্যা: প্রথম ৩ জন দিল $৫ → আপনার কাছে ৩টি $৫। ৪র্থ জন দিল $১০ → আপনি দিলেন $৫ চেঞ্জ। ৫ম জন দিল $২০ → আপনি দিলেন $১০ + $৫ = $১৫ চেঞ্জ। সবাই পেল চেঞ্জ।
এলগরিদম
n5 = 0, n10 = 0, n20 = 0(নোটের গণনা)।- প্রতিটি বিলের জন্য:
- $৫ হলে →
n5++ - $১০ হলে →
n10++, তারপরn5 > 0কিনা চেক করুন। হ্যাঁ হলেn5--, না হলেFalseরিটার্ন। - $২০ হলে →
n20++। চেঞ্জ দিতে হবে $১৫।- যদি
n10 > 0 এবং n5 > 0→ একটা $১০ ও একটা $৫ দিন (n10--, n5--)। - অন্যথায় যদি
n10 == 0 এবং n5 >= 3→ তিনটা $৫ দিন (n5 -= 3)। - অন্যথায় →
Falseরিটার্ন।
- যদি
- $৫ হলে →
- সব গ্রাহক প্রক্রিয়া হয়ে গেলে
Trueরিটার্ন করুন।
পাইথন বাস্তবায়ন
class Solution:
def lemonadeChange(self, bills):
n5 = n10 = n20 = 0
for bill in bills:
if bill == 5:
n5 += 1
elif bill == 10:
n10 += 1
if n5 == 0:
return False
n5 -= 1
else: # bill == 20
n20 += 1
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
ইনপুট / আউটপুট
ইনপুট: [5,5,5,10,20] আউটপুট: True