[ch5. 효율성(투포인터, 슬라이딩윈도우, 해쉬)] 최대매출 javascript

fgStudy·2022년 5월 17일
0

코딩테스트

목록 보기
58/69
post-thumbnail

해당 포스팅은 인프런의 "자바스크립트 알고리즘 문제풀이" 강의 중 챕터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));
profile
지식은 누가 origin인지 중요하지 않다.

0개의 댓글