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

পাইথনে n আইটেম বিক্রয়ের পর অবশিষ্ট আইডি সংখ্যা

items নামক একটি তালিকা এবং একটি মান n দেওয়া আছে। একজন বিক্রেতা তার ব্যাগে র‍্যান্ডম আইডিয়ুক্ত আইটেম রাখে। সে চায় তো n সংখ্যক আইটেম মুছে ফেলতে পারে। n অপসারণের পর ব্যাগে থাকা আলাদা আইডির ন্যূনতম সংখ্যা বের করতে হবে।

উদাহরণ: items = [2, 2, 6, 6], n = 2 হলে আউটপুট ১, কারণ সে দুইটি 2 বা 6 আইডি মুছে দিলে শুধু এক ধরনের আইডি থাকবে।

সমাধানের ধাপসমূহ

  • Counter ব্যবহার করে প্রতিটি আইডির ফ্রিকোয়েন্সি বের করুন
  • ans := ইউনিক আইডি সংখ্যা
  • ফ্রিকোয়েন্সি সর্ট করুন
  • সর্বনিম্ন ফ্রিকোয়েন্সি থেকে শুরু করে n 때까지 মুছে ans কমানো
  • ans ফেরত দিন

উদাহরণ কোড

from collections import Counter
class Solution:
    def solve(self, items, n):
        c = Counter(items)
        ans = len(c)
        freq = sorted(c.values())
        i = 0
        while i < len(freq):
            if freq[i] <= n:
                n -= freq[i]
                ans -= 1
            else:
                return ans
            i += 1
        return 0

ob = Solution()
items = [2, 2, 6, 6]
n = 2
print(ob.solve(items, n))

ইনপুট

[2, 2, 6, 6], 2

আউটপুট

1
  1. পাইথনে রঙ মার্জ করলে অবশিষ্ট ন্যূনতম রঙের সংখ্যা বের করার প্রোগ্রাম

  2. পাইথনে BST-এ নির্দিষ্ট রেঞ্জে থাকা নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে প্রাইম নম্বর খুঁজে বের করার বিভিন্ন পদ্ধতি

  4. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা