해당 포스팅은 인프런의 "자바스크립트 알고리즘 문제풀이" 강의 중 챕터5의 최대매출 문제 풀이를 다룬다. 슬라이딩 윈도우로 풀이하였다.
일정 범위(k)의 값을 구하는 문제이므로 슬라이딩 윈도우를 이용하면 된다.
슬라이딩 윈도우는 O(N)으로 구할 수 있다.
// 슬라이딩 윈도우 (O(N))
function solution(n, k, nums) {
let answer = 0;
let sum = 0;
for (let i=0; i<k; i++) {
sum += nums[i];
}
answer = Math.max(answer, sum);
for (let i=k; i<n; i++) {
sum += (nums[i] - nums[i-k]);
answer = Math.max(answer, sum);
}
return answer;
}
const n = 10;
const k = 3;
const nums = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(n, k, nums));