[백준] 7453번 합이 0인 네 정수

거북이·2023년 8월 17일
0

백준[골드2]

목록 보기
5/8
post-thumbnail

💡문제접근

  • 배열 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

# A[a] + B[b] = -(C[c] + D[d])
result = 0
for c in C:
    for d in D:
        if -(c + d) in ab_dict:
            result += ab_dict[-(c + d)]
print(result)

💡소요시간 : 57m

0개의 댓글