Algorithm/📊 Problem Solving

[백준/BOJ] 7453 - 합이 0인 네 정수

posted by sangmin

7453 - 합이 0인 네 정수

문제

정수로 이루어진 크기가 같은 배열 A, B, C, D가 있다.

A[a], B[b], C[c], D[d]의 합이 0인 (a, b, c, d) 쌍의 개수를 구하는 프로그램을 작성하시오.

코드

from collections import defaultdict
import sys
input = sys.stdin.readline

N = int(input())
A, B, C, D = [], [], [], []
for _ in range(N):
    a, b, c, d = map(int, input().split())
    A.append(a)
    B.append(b)
    C.append(c)
    D.append(d)

AB = defaultdict(int)
for i in range(N):
    for j in range(N):
        ab = A[i] + B[j]
        AB[ab] += 1

result = 0
for i in range(N):
    for j in range(N):
        cd = -(C[i] + D[j])

        if cd in AB:
            result += AB[cd]

print(result)

한마디

아이디어 떠올리는 게 굉장히 어려운 문제였던 것 같다.

 

7453번: 합이 0인 네 정수

첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다.

www.acmicpc.net