(알고리즘) 최대매출

호두파파·2022년 1월 27일
0

알고리즘 연습

목록 보기
51/60


현수의 아빠는 제과점을 운영합니다. 현수 아빠는 현수에게 N일 동안의 매출기록을 주고 연속된 K일 동안의 최대 매출액이 얼마인지 구하라고 했다.

만약 N=10이고 10일 간의 매출기록이 아래와 같다. 이때 K=3이면 [12, 15, 11, 20, 25, 10, 20, 19, 13, 15] 연속된 3일간의 최대 매출액은 11+20+25=56만원이다.

입력예제

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

출력예제

56


3일간의 최대 매출액을 구해야하는 제약 조건 때문에 비교적 쉽게 해결할 수 있는 문제다.

먼저 처음부터 3일 간의 최대 매출액을 초기 구해주고,
원본 배열을 순회하면서, K번째 값을 더하고, K-i번째 값을 빼주는 식으로 최대값을 갱신해준다.

최대값은 Math.max()로 구할 수 있다.

function solution(n, arr) {
  let answer = max = 0;
  
  for (let i = 0; i < n; i++) {
    max += arr[i] // 3개의 합이 주어진다. 
  }
  answer = max;
  for (let i = n; i < arr.length; i++) {
    max += (arr[i] - arr[i-n]);
    answer = Math.max(answer, max);
  }
  return answer;
}

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

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글