본문 바로가기

알고리즘/구현

파이썬 | 백준 | 7453 | 합이 0인 네 정수

 

Solution. dictionary

# 7453, 합이 0인 네 정수
import sys
from collections import defaultdict

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

# abPlus = defaultdict(int)
# for a in A:
#     for b in B:
#         abPlus[a+b] = abPlus[a+b]+1
#
# count = 0
# for c in C:
#     for d in D:
#         count += abPlus[-(c+d)]

abPlus = dict()
for a in A:
    for b in B:
        abPlus[a + b] = abPlus.get(a + b, 0) + 1
count = 0
for c in C:
    for d in D:
        count += abPlus.get(-(c + d), 0)

print(count)

defaultdict: 시간초과

 

www.acmicpc.net/problem/7453

 

7453번: 합이 0인 네 정수

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

www.acmicpc.net