고정 크기 슬라이딩 윈도우: 길이 K 연속 부분배열 합의 최댓값


완성된 자바스크립트 코드

/**
 * 길이 K인 연속 부분배열의 합 중 최댓값을 구하는 함수
 * @param {number[]} A - 정수 배열
 * @param {number} K - 윈도우 크기
 * @return {number} 최대 합 (윈도우 크기가 배열 길이보다 크면 0 반환)
 */
function maxSubarraySum(A, K) {
  // 배열 길이보다 윈도우가 크면 불가능
  if (K > A.length) return 0;

  // 1) 초기 윈도우 합 계산
  let sum = 0;
  for (let i = 0; i < K; i++) {
    sum += A[i];
  }
  let maxSum = sum;

  // 2) 슬라이딩 윈도우: 한 칸씩 오른쪽으로 이동
  for (let i = K; i < A.length; i++) {
    sum += A[i] - A[i - K];   // 들어오는 값 더하고, 나가는 값 빼기
    if (sum > maxSum) {
      maxSum = sum;           // 최대 합 갱신
    }
  }

  return maxSum;
}

// 예시 실행
const A = [3, 5, 2, 6, 4];
const K = 3;
console.log(maxSubarraySum(A, K)); // 출력: 13

이 코드는 O(N) 시간에 배열을 한 번만 순회하면서 해결하기 때문에, 연속된 구간 문제에서 매우 효율적으로 쓰일 수 있습니다.