কম্পিউটার টিউটোরিয়াল

পাইথনে লেমনেড চেঞ্জ (Lemonade Change) সমস্যা সমাধান


সমস্যা বিবরণ

একটি লেমনেড স্ট্যান্ডে প্রতিটি গ্লাসের দাম $৫। গ্রাহকরা очередা দাঁড়িয়ে $৫, $১০ বা $২০ নোট দিয়ে কেনে। আপনার पास প্রাথমিকভাবে কোনো চেঞ্জ নেই। প্রতিটি গ্রাহককে সঠিক চেঞ্জ দিতে হবে যাতে নেট লেনদেন $৫ হয়। সব গ্রাহককে চেঞ্জ দেওয়া সম্ভব কিনা তা যাচাই করতে হবে।

উদাহরণ

ইনপুট: [5,5,5,10,20] → আউটপুট: True

ব্যাখ্যা: প্রথম ৩ জন দিল $৫ → আপনার কাছে ৩টি $৫। ৪র্থ জন দিল $১০ → আপনি দিলেন $৫ চেঞ্জ। ৫ম জন দিল $২০ → আপনি দিলেন $১০ + $৫ = $১৫ চেঞ্জ। সবাই পেল চেঞ্জ।

এলগরিদম

  1. n5 = 0, n10 = 0, n20 = 0 (নোটের গণনা)।
  2. প্রতিটি বিলের জন্য:
    • $৫ হলে → n5++
    • $১০ হলে → n10++, তারপর n5 > 0 কিনা চেক করুন। হ্যাঁ হলে n5--, না হলে False রিটার্ন।
    • $২০ হলে → n20++। চেঞ্জ দিতে হবে $১৫।
      • যদি n10 > 0 এবং n5 > 0 → একটা $১০ ও একটা $৫ দিন (n10--, n5--)।
      • অন্যথায় যদি n10 == 0 এবং n5 >= 3 → তিনটা $৫ দিন (n5 -= 3)।
      • অন্যথায় → False রিটার্ন।
  3. সব গ্রাহক প্রক্রিয়া হয়ে গেলে 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
  1. পাইথন টকিন্টারে বাটন সাইজ পরিবর্তন করা

  2. ম্যাটপ্লটলিবে (পাইথন) ফন্ট পরিবর্তন করার পদ্ধতি

  3. কয়েন চেঞ্জ সমস্যার পাইথন প্রোগ্রাম

  4. পাইথনে issuperset() ফাংশন