boj 7453 합이 0인 네 정수

강민승·2023년 6월 8일
0

알고리즘

목록 보기
10/19
post-thumbnail

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

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

처음 볼 때는 어케하지? 했어서 알고리즘 분류를 봤는데 중간에서 만나기 알고리즘이 있어서 반으로 나눠하면 되겠구나 했다.. 풀 때는 어렵다고 생각했는데 풀고나니 쉬웠던..

n = int(input())

result = 0
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 = dict() 
for a in A:
    for b in B:
        v = a + b # 모든 경우의 수를 딕셔너리에 저장
        if v not in ab.keys(): 
            ab[v] = 1
        else:
            ab[v] += 1


for c in C:
    for d in D:
        v = -1 * (c + d)
        if v in ab.keys(): # -ab인 경우, 그 값을 result에 추가
            result += ab[v]

print(result)
profile
Step by Step goes a long way. 꾸준하게 성장하는 개발자 강민승입니다.

0개의 댓글