মান লিজিয়ে আমাদের একটি অ্যারে notes আছে যা কাস্টমার কিউ-এ থাকা মানুষের রুপি নোটগুলো রিপ্রেজেন্ট করে। সবাই ৫০ টাকার টিকেট কিনতে অপেক্ষা করছে। এখানে সম্ভব নোটগুলো হল [৫০, ১০০ এবং ২০০]। আমাদের যাচাই করতে হবে ক্রমাবর্ধমানভাবে টিকেট বेचা সম্ভব কিনা, প্রাথমিকভাবে আমাদের হাতে ০ টাকা আছে।
যেমন, ইনপুট যদি notes = [50, 50, 100, 100] হয়, তবে আউটপুট হবে True কারণ প্রথম দুজনকে চেঞ্জ দরকার নেই, কিন্তু এখন আমাদের কাছে দুইটি ৫০ টাকার নোট আছে। তাই পরের দুজনকে ৫০ টাকা করে চেঞ্জ দিয়ে সব টিকেট ক্রম অনুযায়ী বेचা সম্ভব।
সমাধানের ধাপসমূহ
freq :=একটি খালি ম্যাপi := 0- যখন
i < notes-এর সাইজ, করুন:- যদি
notes[i]৫০ সমান হয়, তবে:freq[50] := freq[50] + 1
- অন্যথায় যখন
notes[i]১০০ সমান হয়, তবে:freq[100] := freq[100] + 1- যদি
freq[50]০ হয়, তবে:- লুপ থেকে বের হোন
freq[50] := freq[50] - 1
- অন্যথায়:
- যদি
freq[100] > 0এবংfreq[50] > 0হয়, তবে:freq[100] := freq[100] - 1freq[50] := freq[50] - 1
- অন্যথায় যখন
freq[50] >= 3হয়, তবে:freq[50] := freq[50] - 3
- অন্যথায়:
- লুপ থেকে বের হোন
- যদি
i := i + 1
- যদি
- যদি
inotes-এর সাইজ সমান হয়, তবে:Trueরিটার্ন করুন
Falseরিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:
from collections import defaultdict
def solve(notes):
freq = defaultdict(int)
i = 0
while i < len(notes):
if notes[i] == 50:
freq[50] += 1
elif notes[i] == 100:
freq[100] += 1
if freq[50] == 0:
break
freq[50] -= 1
else:
if freq[100] > 0 and freq[50] > 0:
freq[100] -= 1
freq[50] -= 1
elif freq[50] >= 3:
freq[50] -= 3
else:
break
i += 1
if i == len(notes):
return True
return False
notes = [50, 50, 100, 100]
print(solve(notes))
ইনপুট
[50, 50, 100, 100]
আউটপুট
True