최대매출(Sliding Window)
알고리즘 공부 간 기록이 필요한 문제들에 대한 정리를 기록하는 포스트 입니다.
1. 문제 요건
N 일간의 매출 기록이 주어지고 K 일간의 연속된 매출 중 최대 매출을 구하라
2. 코드
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
}
let arr = [12,15,11,20,25,10,20,19,13,15]
3. 결과정리
이 문제는 슬라이딩 윈도우(Sliding Window) 방법이며 주어진 배열에서 K 개의 숫자를 옆으로 이동하며 로직을 완성하는 방법이다.
크게 어려운 문제는 아니었으나 중요한 포인트는 이중 반복문을 통해 돌리는 것보다 적은 시간복잡도로 풀기 위해 추가되는값과 빠지는 값의 차이를 현재 최대값과 비교하는 부분을 기억하면 좋을것 이다.