BOJ : 합이 0인 네 정수 [7453]

재현·2021년 7월 25일
0
post-custom-banner

1. 문제


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

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

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

2. 아이디어


  • clone
    1. 4개를 동시에 계산하면 시간초과
    2. 딕셔너리를 활용하여 a,b를 계산하고 c,d를 계산한 다음 (a,b 계산결과) == -(c,d 계산 결과)가 성립하면 총 합은 0이다.

3. 코드


mine

import sys
input = sys.stdin.readline

n = int(input())
result = 0
a_b_dict = dict()
arr_a, arr_b, arr_c, arr_d = [], [], [], []
for _ in range(n):
    a, b, c, d = map(int,sys.stdin.readline().split())
    arr_a.append(a)
    arr_b.append(b)
    arr_c.append(c)
    arr_d.append(d)

for a in arr_a:
    for b in arr_b:
        a_b_dict[a+b] = a_b_dict.get(a+b, 0) + 1

for c in arr_c:
    for d in arr_d:
        result += a_b_dict.get(-(c+d), 0)

print(result)

출처 : https://jjangsungwon.tistory.com/112
https://jaeyoon-95.tistory.com/168

profile
성장형 프로그래머
post-custom-banner

0개의 댓글