ধরুন, costs নামে একটি অ্যারে আছে যার n টি এলিমেন্ট, যেখানে costs[i] হলো i-তম আইসক্রিম বারের দাম (কয়েনে)। আমাদের আছে c সংখ্যক কয়েন এবং আমরা যত বেশি সম্ভব আইসক্রিম বার কিনব। আমাদের লক্ষ্য হলো c কয়েন দিয়ে সর্বাধিক কতটি আইসক্রিম বার কেনা যায় তা বের করা।
উদাহরণ
ইনপুট: costs = [3,1,4,5,2], c = 10
আউটপুট: 4 কারণ আমরা ইন্ডেক্স ০, ১, ২, ৪-এ আইসক্রিম কিনতে পারি যার মোট দাম ৩ + ১ + ৪ + ২ = ১০।
সমাধানের ধাপসমূহ
costsলিস্টটি সর্ট করুন।i := 0সেট করুন।- যখন
i < size of costsএবংc >= costs[i], তখন লুপ চালান:c := c - costs[i]i := i + 1
iরিটার্ন করুন।
পাইথন কোড
def solve(costs, c):
costs.sort()
i = 0
while i < len(costs) and c >= costs[i]:
c = c - costs[i]
i = i + 1
return i
costs = [3, 1, 4, 5, 2]
c = 10
print(solve(costs, c))
ইনপুট
[3,1,4,5,2], 10
আউটপুট
4
ব্যাখ্যা: সর্ট করার পর costs = [1, 2, 3, 4, 5] হয়। ক্রমশः ১, ২, ৩, ৪ কিনে মোট ১০ কয়েন খরচ হয়। ৫ কিনলে ১৫ কয়েন লাগত যা আমাদের নেই। তাই সর্বোচ্চ ৪টি কিনা সম্ভব।