슬라이딩 윈도우 패턴은 배열 등의 항목을 순차적으로 검사하면서 고정된 크기의 하위 집합의 값을 구할 때 유용한 패턴이다. 처음 n개를 배열로 묶어 필요한 값을 계산하고 한 칸씩 뒤로 움직이며 계산하는 패턴이다.
const solution = (arr, num) => {
if(num > arr.length) return null;
let maxSum = 0;
let tempSum = 0; // 현재 윈도우의 합계를 저장
for(let i = 0; i < num; i++) {
maxSum += arr[i]; // 초기값
}
tempSum = maxSum;
for(let i = num; i < arr.length; i++) {
tempSum = tempSum - arr[i - num] + arr[i]; // 맨 앞의 값을 삭제하고 맨 뒤에 값을 더함
maxSum = Math.max(maxSum, tempSum);
}
return maxSum;
}
이 방식을 사용하면 매번 최댓값을 계산할 때마다 새롭게 배열을 생성하지 않아도 되기 때문에 시간복잡도가 낮아진다.