Sliding Window Pattern

no-pla·2024년 5월 9일
0
post-thumbnail

슬라이딩 윈도우 패턴은 배열 등의 항목을 순차적으로 검사하면서 고정된 크기의 하위 집합의 값을 구할 때 유용한 패턴이다. 처음 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;
}

이 방식을 사용하면 매번 최댓값을 계산할 때마다 새롭게 배열을 생성하지 않아도 되기 때문에 시간복잡도가 낮아진다.

0개의 댓글