Development/Algorithm

[백준] 2143번: 두 배열의 합 (python)

jstar0525 2021. 5. 6. 21:19
반응형

www.acmicpc.net/problem/2143

 

2143번: 두 배열의 합

첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1≤m≤1,000)이 주어지고, 그 다

www.acmicpc.net

import sys

def find_sum_dic(num, array):

    sum_dic = {}

    for i in range(num):
        for j in range(i+1,num+1):
            s = sum(array[i:j])
            if s in sum_dic:
                sum_dic[s] += 1
            else:
                sum_dic[s] = 1
    
    return sum_dic

if __name__ == '__main__':

    T = int(input())
    n = int(input())
    A = list(map(int,sys.stdin.readline().split()))
    m = int(input())
    B = list(map(int,sys.stdin.readline().split()))

    sum_A = find_sum_dic(n, A)
    sum_B = find_sum_dic(m, B)

    num = 0

    for ka in sum_A.keys():
        if T - ka in sum_B:
            num += sum_A[ka]*sum_B[T - ka]

    print(num)
반응형