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
😉문제 설명
두 배열에서 연속된 합의 숫자를 찾은 값의 합이 T가 되는 경우의 수를 찾습니다.
- A배열에서 찾을 수 있는 경우의 수를 찾아 객체에 넣습니다. 이 객체는 key값으로 만들 수 있는 숫자를, value로 key값을 만들 수 있는 횟수를 넣습니다.
- B배열에서 찾을 수 있는 경우의 수를 만들며 이 수와 A배열로 만들어진 객체의 값을 더해 T값이 나올 수 있는 경우를 찾습니다.
😎문제 풀이
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split("\\n")
const [T,n,m] = [+input[0],+input[1],+input[3]];
const A = input[2].split(" ").map(Number)
const B = input[4].split(" ").map(Number)
const A_map = {}
for(let i=0; i<n; i++){
let sum = 0;
for(let j=i; j<n; j++){
sum += A[j]
if(A_map[sum]) A_map[sum]++
else A_map[sum] = 1;
}
}
let answer = 0;
for(let i=0; i<m; i++){
let sum = 0;
for(let j=i; j<m; j++){
sum += B[j]
if(A_map[T-sum]){
answer += A_map[T-sum]
}
}
}
console.log(answer)
'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 1987번 알파벳 node.js JavaScript JS (0) | 2023.08.14 |
---|---|
[백준 알고리즘] 1208번 부분수열의 합 2 node.js JavaScript JS (0) | 2023.07.28 |
백준 node.js 1197번 최소 스패닝 트리, 최소 신장 트리 크루스칼 JavaScript JS (0) | 2023.07.23 |
백준 node.js 1916번 최소비용 구하기 다익스트라 알고리즘 JavaScript JS (0) | 2023.07.21 |
백준 node.js 11657번 타임머신 벨만-포드 알고리즘 JavaScript JS (0) | 2023.07.21 |