No Rules Rules

두 배열의 합 (feat. 백준, 2143번) 본문

생활/코테

두 배열의 합 (feat. 백준, 2143번)

개발하는 완두콩 2023. 2. 1. 17:00
728x90
반응형

두 배열의 합
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

 

// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <map>
using namespace std;
int main() {
    ios::sync_with_stdio(false), cin.tie(NULL);
    long long T, N, M, sumA[1001]{0}, sumB[1001]{0}, ans = 0;
    map<long long, int> tmp;
    cin >> T >> N;
    for(register int n = 1, v; n <= N; ++n)
        cin >> v, sumA[n] = sumA[n - 1] + v;
	cin >> M;
    for(register int m = 1, v; m <= M; ++m)
        cin >> v, sumB[m] = sumB[m - 1] + v;

    for(register int i = 1, j; i <= M; ++i)
        for(j = i; j <= M; ++j)
            ++tmp[sumB[j] - sumB[i - 1]];
    for(register int i = 1, j; i <= N; ++i)
        for(j = i; j <= N; ++j){
            register long long v = sumA[j] - sumA[i - 1];
            ans += tmp[T - v];
        }
	cout << ans;
	return 0;
}
// *&)*@*

 

반응형

연속된 A값 (1개 이상) 과 연속된 B값 (1개 이상) 의 합이 T인 경우는 총 몇개인지를 묻는 문제입니다.

투포인터로 풀이해야 할것 같은데 이상한 관점으로 얼떨결에 정답이 되었습니다.

728x90
반응형
Comments