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

পাইথনে kটি টাওয়ার একই আকারের করার জন্য ন্যূনতম ব্রিকের সংখ্যা বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে টাওয়ারদের আকারের একটি তালিকা এবং একটি পজিটিভ মান k আছে। আমরা kটি টাওয়ার বেছে নিতে চাই এবং ব্রিক যোগ করে তাদের সবার আকার একই করতে চাই, কিন্তু যত কম ব্রিক ব্যবহার করা যায় তত ভালো। আমাদের কাজ হল kটি টাওয়ার বেছে নিয়ে তাদের একই আকারের করার জন্য ন্যূনতম ব্রিকের সংখ্যা বের করা।

উদাহরণস্বরূপ, যদি ইনপুট হয় heights = [4, 7, 31, 14, 40] এবং k = 3, তবে আউটপুট হবে 17, কারণ আমরা ৫, ৮, এবং ১৫ বেছে নিলে ১৭টি ব্রিক দরকার হবে একই আকারের করার জন্য। (নোট: উদাহরণে ইনপুট ও এক্সপ্লানেশনের মান মেলেনা, কিন্তু লজিক অনুযায়ী বুঝানো হয়েছে)

সমাধানের ধাপসমূহ:
  • heights তালিকাটি সর্ট করুন।
  • ans := infinity
  • s := 0
  • প্রতিটি ইনডেক্স i এবং ভ্যালু x এর জন্য heights-এ:
    • s := s + x
    • যদি i >= k হয়, তবে s := s - heights[i-k]
    • যদি i >= k-1 হয়, তবে ans := min(ans, x*k - s)
  • ans রিটার্ন করুন।
উদাহরণ কোড
class Solution:
    def solve(self, heights, k):
        heights.sort()
        ans = float("inf")
        s = 0
        for i, x in enumerate(heights):
            s += x
            if i >= k:
                s -= heights[i - k]
            if i >= k - 1:
                ans = min(ans, x * k - s)
        return ans

ob = Solution()
heights = [5, 8, 32, 15, 41]
k = 3
print(ob.solve(heights, k))
ইনপুট
[5, 8, 32, 15, 41], 3
আউটপুট
17
  1. পাইথনে শেষ পজিশনে পৌঁছানোর জন্য ন্যূনতম হপ সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে লিস্ট ব্যালেন্সড করতে ডিলিশনের ন্যূনতম সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে একটি সংখ্যাকে অন্য সংখ্যায় রূপান্তর করার ন্যূনতম অপারেশন বের করার প্রোগ্রাম

  4. পাইথনে স্ট্রিং s-কে পরিবর্তন করে t কে সাবস্ট্রিং बनानेয় ন্যূনতম অপারেশন বের করার প্রোগ্রাম