💡문제접근
- 배열 A, B, C, D가 존재하는데 배열 A와 B를 합쳐서 A와 B의 원소를 더해서 딕셔너리에 먼저 저장하고 그 다음 배열 C와 D의 원소를 이중 반복문으로 가져와 합한 값이 딕셔너리에 존재하는지 확인하는 방법을 이용했다.
A[a] + B[b] + C[c] + D[d] = 0
이므로 수식을 이항하면 결국 A[a] + B[b] = -(C[c] + D[d])
가 성립한다.
💡코드(메모리 : 941392KB, 시간 : 9692ms)
import sys
input = sys.stdin.readline
n = int(input())
A = []
B = []
C = []
D = []
for i in range(n):
a, b, c, d = map(int, input().strip().split())
A.append(a)
B.append(b)
C.append(c)
D.append(d)
ab_dict = {}
for a in A:
for b in B:
if a + b not in ab_dict:
ab_dict[a + b] = 1
else:
ab_dict[a + b] += 1
result = 0
for c in C:
for d in D:
if -(c + d) in ab_dict:
result += ab_dict[-(c + d)]
print(result)
💡소요시간 : 57m