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

পাইথনে কন্ট্যাক্ট মেইল আইডি থেকে ইউনিক ব্যক্তি সংখ্যা বের করা

কন্ট্যাক্ট লিস্টে প্রতিটি রো একাধিক মেইল থাকতে পারে। যদি দুটি কন্ট্যাক্ট কমন মেইল শেয়ার করে, তবে সে একই ব্যক্তি। ইউনিক ব্যক্তির সংখ্যা বের করুন।

ইনপুট উদাহরণ

contacts = [
    ["alex@gmail.com", "alex@yahoo.com"],
    ["alex_25@yahoo.com", "alex@gmail.com"],
    ["bob15@gmail.com"]
]

আউটপুট: 2 (প্রথম দুটি একই ব্যক্তি, তৃতীয় আলাদা)

অ্যালগরিদম

  1. found সেটে দেখা মেইল রাখুন।
  2. প্রতিটি কন্ট্যাক্টের মেইল চেক করুন: যদি কোনো মেইল আগে দেখা থাকে, তবে ডুপ্লিকেট।
  3. ডুপ্লিকেট না হলে ইউনিক কাউন্ট বাড়ান।

পাইথন কোড

def solve(contacts):
    ans = 0
    found = set()
    for c in contacts:
        duplicate = False
        for email in c:
            if email not in found:
                found.add(email)
            else:
                duplicate = True
        if not duplicate:
            ans += 1
    return ans

# টেস্ট
contacts = [
    ["alex@gmail.com", "alex@yahoo.com"],
    ["alex_25@yahoo.com", "alex@gmail.com"],
    ["bob15@gmail.com"]
]
print(solve(contacts))  # 2

ব্যাখ্যা

এই সমাধান আংশিকভাবে কাজ করে (শুধু পिछোর কন্ট্যাক্টের সাথে কমন মেইল চেক করে)। পূর্ণ সমাধানের জন্য Union-Find (DSU) ব্যবহার করতে হয় যাতে ট্রানজিটিভ কানেকশন হ্যান্ডেল হয়।

  1. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

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

  3. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা

  4. পাইথন প্রোগ্রাম: লিস্ট থেকে অনন্য (Unique) মান প্রিন্ট করা