최대 매출
현수의 아빠는 제과점을 운영합니다.
현수 아빠는 현수에게 N일 동안의 매출기록을 주고 연속 된 K일 동안의 최대 매출액이 얼마인지 구하라고 했습니다.
만약 N=10이고 10일 간의 매출기록이 아래와 같습니다. 이때 K=3이면12 15 11 20 25 10 20 19 13 15
연속된 3일간의 최대 매출액은 11+20+25=56만원입니다.
여러분이 현수를 도와주세요.
입력설명
첫 줄에 N(5<=N<=100,000)과 M(2<=K<=N)가 주어집니다.
두 번째 줄에 N개의 숫자열이 주어집니다. 각 숫자는 500이하의 음이 아닌 정수입니다.
출력설명
첫 줄에 최대 매출액을 출력합니다.
입력예제1
10 3
12 15 11 20 25 10 20 19 13 15
출력예제1
56
풀이 과정
배열에서 K일간의 합을 먼저 구한 후, 배열의 길이만큼 for문을 도는데, k의 크기로 돌아서 가장 큰 값을 찾아서 리턴한다.
for문에서 하나 증가 할 때 arr[i] 값이 들어오면 arr[i-k]값을 빼주면서 반복
나의 Solution
function solution(k, arr){
let answer=0;
let max = arr.slice(0,k);
let sum = max.reduce((pre,cur)=> pre+cur,0);
for(let i = k; i<arr.length; i++){
let a = sum - arr[i-k] + arr[i];
if(a> answer){
answer = a;
}
sum = a;
}
return answer;
}
다른 Solution
function solution(k, arr){
let answer, sum=0;
for(let i=0; i<k; i++) sum+=arr[i];
answer=sum;
for(let i=k; i<arr.length; i++){
sum+=(arr[i]-arr[i-k]);
answer=Math.max(answer, sum);
}
return answer;
}
'코딩테스트' 카테고리의 다른 글
[Javascript] 결혼식 (0) | 2022.04.16 |
---|---|
[Javascript] 공주 구하기 (0) | 2022.04.13 |
[Javascript] 연속 부분수열 1 (0) | 2022.04.10 |
[백준] 스택 - 파이썬 (0) | 2021.09.27 |
[Python] 더 맵게 - 프로그래머스 Level2 (0) | 2021.09.15 |