코딩연습

[백준 알고리즘] Node.js 11659. 구간 합 구하기 4

니 뽀 2023. 6. 3. 12:36

1. 문제

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

 

11659번: 구간 합 구하기 4

첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j

www.acmicpc.net

 

2. 풀이

- 누적합 배열을 생성해 놓은 뒤, j번째의 누적합에서 i번째까지의 누적합을 빼주면 된다.

const inputs = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const [n,m] = inputs.shift().split(' ').map(Number);
const nArr = inputs.shift().split(' ').map(Number);

let totalSum = new Array(n+1).fill(0);
totalSum[1] = nArr[0];

// 누적 합 배열 만들기
for(let i = 1; i < n; i++){
  totalSum[i+1] = totalSum[i] + nArr[i];
}

let answer = "";
for(let i = 0; i < m; i++){
  let [start, end] = inputs[i].split(' ').map(Number);
  
  answer += `${totalSum[end] - totalSum[start-1]}\n`
}

console.log(answer)