정수로 이루어진 크기가 같은 배열 A, B, C, D가 있다.
A[a], B[b], C[c], D[d]의 합이 0인 (a, b, c, d) 쌍의 개수를 구하는 프로그램을 작성하시오.
출처 : https://www.acmicpc.net/problem/7453
- clone
- 4개를 동시에 계산하면 시간초과
- 딕셔너리를 활용하여 a,b를 계산하고 c,d를 계산한 다음 (a,b 계산결과) == -(c,d 계산 결과)가 성립하면 총 합은 0이다.
mine
import sys input = sys.stdin.readline n = int(input()) result = 0 a_b_dict = dict() arr_a, arr_b, arr_c, arr_d = [], [], [], [] for _ in range(n): a, b, c, d = map(int,sys.stdin.readline().split()) arr_a.append(a) arr_b.append(b) arr_c.append(c) arr_d.append(d) for a in arr_a: for b in arr_b: a_b_dict[a+b] = a_b_dict.get(a+b, 0) + 1 for c in arr_c: for d in arr_d: result += a_b_dict.get(-(c+d), 0) print(result)
출처 : https://jjangsungwon.tistory.com/112
https://jaeyoon-95.tistory.com/168