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

পাইথনে ৬০ দিয়ে বিভাজ্য গান জোড়া (Pairs of Songs With Total Durations Divisible by 60 in Python)


সমস্যা বিবরণ

গানদের লিস্ট দেওয়া আছে, i-তম গানের duration time[i] সেকেন্ড। দুটি গানের মোট duration ৬০ দিয়ে বিভাজ্য হয় এমন জোড়ার সংখ্যা বের করতে হবে।

উদাহরণ: [30, 20, 150, 100, 40] → ৩ জোড়া: (30,150), (20,100), (20,40) - সবগুলোর যোগফল ৬০-এর গুণিতক।

সমাধানের পদ্ধতি (রিমেইন্ডার ফ্রিকোয়েন্সি)

  1. রিমেইন্ডার ফ্রিকোয়েন্সি ম্যাপ (ডিকশনারি) মেইনটেইন করুন।
  2. প্রতিটি time t এর জন্য:
    • r = t % 60
    • complement = (60 - r) % 60
    • ans += freq[complement]
    • freq[r]++
  3. অंत্যে ans ফেরত দিন।

পাইথন উদাহরণ

class Solution(object):
    def numPairsDivisibleBy60(self, time):
        freq = {}
        ans = 0
        for t in time:
            r = t % 60
            complement = (60 - r) % 60
            ans += freq.get(complement, 0)
            freq[r] = freq.get(r, 0) + 1
        return ans

ob1 = Solution()
print(ob1.numPairsDivisibleBy60([30, 20, 150, 100, 40]))

ইনপুট

[30, 20, 150, 100, 40]

আউটপুট

3

ব্যাখ্যা

  • t=30: r=30, complement=30, freq[30]=0 → ans=0, freq[30]=1
  • t=20: r=20, complement=40, freq[40]=0 → ans=0, freq[20]=1
  • t=150: r=30, complement=30, freq[30]=1 → ans=1, freq[30]=2
  • t=100: r=40, complement=20, freq[20]=1 → ans=2, freq[40]=1
  • t=40: r=40, complement=20, freq[20]=1 → ans=3, freq[40]=2

Counter ব্যবহার করে সংক্ষিপ্ত

from collections import Counter

def numPairsDivisibleBy60(time):
    freq = Counter()
    ans = 0
    for t in time:
        ans += freq[(60 - t % 60) % 60]
        freq[t % 60] += 1
    return ans
  1. পাইথন PyGame: উইন্ডোতে ইমেজ (Image) লোড ও প্রদর্শন করুন

  2. পাইথনে সিঙ্গেল-রো কিবোর্ড টাইমিং ক্যালকুলেশন

  3. পাইথনে ভেরিয়েবলের স্কোপ (Scope of Variables)

  4. পাইথনে timeit মডিউল: কোড এক্সিকিউশন টাইম মাপার সঠিক পদ্ধতি