최대 매출

bkboy·2022년 5월 18일
0
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만원입니다.
여러분이 현수를 도와주세요.

제한사항

입출력 예

풀이

function solution(k, arr) {
  let answer,
    sum = 0;
  for (let i = 0; i < k; i++) {
    sum += arr[i];
  } // 첫째날부터 k일수까지 매출합
  answer = sum; // 최댓값 저장
  for (let j = k; j < arr.length; j++) {
    sum += arr[j] - arr[j - k]; // 하나 더하고 하나 빼가고
    answer = Math.max(answer, sum);
  }
  return answer;
}

let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(3, a));

// 슬라이딩 윈도우 알고리즘
// 창문이 이동하듯 하는 기법, 원래 더한 값을 활용하는 것이 포인트
  • 슬라이딩 윈도우 알고리즘
  • 투포인터 알고리즘과 비슷하다. 계속해서 하나를 더해가며 뒤에껀 빼준다.
    그 중에 최댓값을 Math.max를 이용해 찾는다.
profile
음악하는 개발자
post-custom-banner

0개의 댓글