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)]
- if (target - (k + z))가 m에 있으면
- D의 각 z에 대해 다음을 수행합니다.
- B의 각 j에 대해 다음을 수행합니다.
- 반환 횟수
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
예시
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