본문 바로가기
Problem Solving/Prefix Sum, Cumulative Sum

[누적합] 백준 2143번: 두 배열의 합 / 골드 3

by ggyongi 2021. 8. 22.
반응형

https://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 collections
import sys
input = sys.stdin.readline

t = int(input())
n = int(input())
a = list(map(int, input().split()))
m = int(input())
b = list(map(int, input().split()))

for i in range(1, n):
    a[i] += a[i-1]
sum_a = [0] + a

for i in range(1, m):
    b[i] += b[i-1]
sum_b = [0] + b

a_dct = collections.defaultdict(int)
for i in range(len(sum_a)-1):
    for j in range(i+1, len(sum_a)):
        num = sum_a[j] - sum_a[i]
        a_dct[num] += 1

b_dct = collections.defaultdict(int)
for i in range(len(sum_b)-1):
    for j in range(i+1, len(sum_b)):
        num = sum_b[j] - sum_b[i]
        b_dct[num] += 1

answer = 0
for key in a_dct:
    target = t - key
    answer += a_dct[key] * b_dct[target]

print(answer)
 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글