문제링크: https://www.acmicpc.net/problem/7453
문제해결 아이디어
- n이 4000이므로 2개, 2개씩 묶어서 합을 구한다
- 2개의 합의 값을 key로 하고 key의 갯수를 value으로 하는 딕셔너리를 만든다
- 나머지 2개의 합이 * -1 이 키에 존재하면 value 만큼 정답에 더한다.
소스코드
import sys
from collections import defaultdict
input = sys.stdin.readline
n = int(input())
a,b,c,d = [],[],[],[]
for _ in range(n):
q,w,e,r = map(int, input().split())
a.append(q)
b.append(w)
c.append(e)
d.append(r)
dic = defaultdict(int)
for i in a:
for j in b:
dic[i+j] += 1
answer = 0
for i in c:
for j in d:
target = -1 * (i+j)
if target in dic:
answer += dic[target]
print(answer)