Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 목표 합을 형성하는 별개의 쿼드러플의 수를 찾는 프로그램

<시간/>

A, B, C, D의 네 가지 목록이 있고 목표 값도 있다고 가정하면 A[i] + B[ j] + C[k] + D[l]은 대상과 동일합니다.

따라서 입력이 A =[5, 4, 3] B =[8, 4] C =[6, 2] D =[4, 10] target =23인 경우 출력은 3이 되고 4배가 됩니다. [5, 8, 6, 4] [3, 4, 6, 10] [3, 8, 2, 10]입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • 카운트:=0
  • m :=빈 지도
  • A의 각 i에 대해 다음을 수행합니다.
    • B의 각 j에 대해 다음을 수행합니다.
      • m[i + j] :=m[i + j] + 1
    • C의 각 k에 대해 다음을 수행합니다.
      • D의 각 z에 대해 다음을 수행합니다.
        • if (target - (k + z))가 m에 있으면
          • count :=count + m[타겟 - (k + z)]
  • 반환 횟수

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시

class Solution:
   def solve(self, A, B, C, D, target):
      count = 0
      from collections import defaultdict
      from collections import Counter

      m = defaultdict(int)
      for i in A:
         for j in B:
            m[i + j] += 1

      for k in C:
         for z in D:
            if target - (k + z) in m:
               count += m[target - (k + z)]
      return count

ob = Solution()
A = [5, 4, 3]
B = [8, 4]
C = [6, 2]
D = [4, 10]
target = 23
print(ob.solve(A, B, C, D, target))

입력

[5, 4, 3], [8, 4], [6, 2], [4, 10], 23

출력

3