IF - 최대 매출

Goody·2021년 4월 13일
0

알고리즘

목록 보기
87/122
post-custom-banner

문제

현수의 아빠는 제과점을 운영합니다. 현수 아빠는 현수에게 N일 동안의 매출기록을 주고 연속
된 K일 동안의 최대 매출액이 얼마인지 구하라고 했습니다.
만약 N=10이고 10일 간의 매출기록이 아래와 같습니다. 이때 K=3이면
12 15 11 20 25 10 20 19 13 15
연속된 3일간의 최대 매출액은 11+20+25=56만원입니다.
여러분이 현수를 도와주세요.


예시

KarrOutput
3[12,15,11,20,25,10,20,19,13,15]56

풀이 및 회고

  • 연속된 k 개의 원소들의 합이 최대일 때를 골라야 하는 문제이다.
  • 이중 루프를 돌면서 첫 루프에서는 수열의 시작점을 지정한다.
  • 두 번째 루프에서는 temp 에 수열 k 개의 합을 구하고, 현재 지정된 최댓값과 비교해서 더 크면 최댓값으로 지정한다.
  • 각 원소별로 서브배열을 만드는 슬라이딩 윈도우에 대한 문제였는데, 근래 배운 알고리즘 중 가장 쉬웠던 것 같다.

코드

const solution =(k, sales) => {
    let max = 0;

    for(let i = 0; i < sales.length; i++) {
        let temp = sales[i];
        for(let j = i+1; j <= i+(k-1); j++) {
            if(!sales[j]) break;
            temp+=sales[j];
            if(temp > max) max = temp;
        }
    }

    return max;
}
post-custom-banner

0개의 댓글