티스토리 뷰

https://www.acmicpc.net/problem/2015

 

2015번: 수들의 합 4

첫째 줄에 정수 N과 K가 주어진다. (1 ≤ N ≤ 200,000, |K| ≤ 2,000,000,000) N과 K 사이에는 빈칸이 하나 있다. 둘째 줄에는 배열 A를 이루는 N개의 정수가 빈 칸을 사이에 두고 A[1], A[2], ..., A[N]의 순서로

www.acmicpc.net

 

const input = require('fs').readFileSync('./dev/stdin').toString().trim().split('\n');
const [N, K] = input[0].split(' ').map(Number);
const nums = input[1].split(' ');

const prefixSum = new Array(N);
let answer = 0;

let sum = 0;
const obj = {};
for (let i = 0; i < N; i++) {
	sum += Number(nums[i]);
	if (sum == K) answer++;
	prefixSum[i] = sum;
	if (obj[sum - K]) answer += obj[sum - K];
	if (!obj[sum]) obj[sum] = 1;
	else obj[sum]++;
}

console.log(answer);
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함