-
문제
https://www.acmicpc.net/problem/11659
11659번: 구간 합 구하기 4
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j
www.acmicpc.net
How to Solve ?
투포인터를 공부하면서, 부분합에 빠르게 접근 할 수 있는 2가지 방법에 대해서 배웠다.
1) 투포인터
2) 구간합
이렇게 2가지인데 ! 이번에 풀었던 문제는 2에 해당 되어서 "구간 합" 을 미리 구해놓고 빼는 방식으로 구현을 하였다.
function solve() { const answer = []; let sum = Array(nums.length + 1).fill(0); for (let i = 1; i <= nums.length; i++) { sum[i] = sum[i - 1] + nums[i - 1]; } for (let i = 0; i < section.length; i++) { const [start, end] = section[i]; answer.push(sum[end] - sum[start - 1]); } return answer.join("\n"); } let [N, M] = [5, 3]; const nums = [5, 4, 3, 2, 1]; const section = [ [1, 3], [2, 4], [5, 5], ]; console.log(solve());
'PS > 백준' 카테고리의 다른 글
[백준_2018] 수들의 합5 ( 투포인터 - 자바스크립트) (0) 2021.06.09 [백준_2805] 나무 자르기 ( 이분탐색 - 자바스크립트 ) (0) 2021.06.09 [백준_1018] 체스판 다시 칠하기 (완전탐색 - 자바스크립트) (0) 2021.06.09 [ 백준 _ 6588 ] 골드바흐의 추측 ( 수학 - 자바스크립트 ) (1) 2021.06.06 [ 백준 - 1406 ] 에디터 ( 스택 _ 자바스크립트 ) (0) 2021.06.06 댓글