[Baekjoon] 합이 0인 네 정수 / Python, 파이썬 / 7453

2023. 1. 12. 22:16Baekjoon/Gold

728x90
반응형

https://www.acmicpc.net/problem/7453

 

7453번: 합이 0인 네 정수

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

www.acmicpc.net

문제 설명

더보기

문제

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

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

입력

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

출력

합이 0이 되는 쌍의 개수를 출력한다.

예제 입력 1

6
-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45

예제 출력 1

 
5

문제 풀이

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().split())
    A.append(a)
    B.append(b)
    C.append(c)
    D.append(d)

counter = {}
result = 0
for i in range(N):
    for j in range(N):
        sum_num = A[i] + B[j]
        if sum_num in counter:
            counter[sum_num] += 1
        else:
            counter[sum_num] = 1

for i in range(N):
    for j in range(N):
        sum_num = C[i] + D[j]
        if -sum_num in counter:
            result += counter[-sum_num]

print(result)
728x90
반응형