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

পাইথনে চারটি তালিকা থেকে টার্গেট চেয়ে ছোট যোগফলযুক্ত চতুর্পদ সংখ্যা

A, B, C, D চারটি তালিকা এবং একটি টার্গেট মান দেওয়া আছে। A[i]+B[j]+C[k]+D[l] <= target সিদ্ধ করে এমন অনন্য ইন্ডেক্স চতুর্পদ (i,j,k,l) এর সংখ্যা বের করতে হবে।

উদাহরণ: A=[3,2], B=[5,3], C=[1], D=[2,3], target=9 হলে আউটপুট ৩।

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

  • A এবং B-এর সব যুগল যোগফল temp_list-এ সংরক্ষণ করুন এবং সর্ট করুন
  • C এবং D-এর সব যুগল যোগফল sum_cd বের করুন
  • sum_ab := target - sum_cd
  • bisect_right দিয়ে temp_list-এ sum_ab এর চেয়ে ছোট বা সমান উপাদান সংখ্যা যোগ করুন
  • মোট কাউন্ট ফেরত দিন

উদাহরণ কোড

from bisect import bisect_right
class Solution:
    def solve(self, A, B, C, D, target):
        temp_list = []
        for i in range(len(A)):
            for j in range(len(B)):
                temp_list.append(A[i] + B[j])
        temp_list.sort()
        ans = 0
        for i in range(len(C)):
            for j in range(len(D)):
                sum_cd = C[i] + D[j]
                sum_ab = target - sum_cd
                ans += bisect_right(temp_list, sum_ab)
        return ans

ob = Solution()
A = [3, 2]
B = [5, 3]
C = [1]
D = [2, 3]
target = 9
print(ob.solve(A, B, C, D, target))

ইনপুট

[3, 2], [5, 3], [1], [2, 3], 9

আউটপুট

3
  1. পাইথনে ট্রিপলেট কাউন্ট যাদের যোগফল টার্গেটের চেয়ে ছোট (3Sum Smaller)

  2. পাইথনে চারটি ইউনিক এলিমেন্ট যাদের যোগফল ঠিক k (4Sum Exact)

  3. পাইথনে 'a' কে 'a' বা 'b' এবং 'b' কে 'b' রেখে বানানো সম্ভাব্য স্ট্রিং সংখ্যা বের করার প্রোগ্রাম

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