
정수 배열과 n이라는 숫자를 받아
해당 배열에서 n만큼 연속된 요소의 합의 최대값을 계산하는 maxSubArraySum이라는 함수를 작성하시오.maxSubArraySum([1,2,5,2,8,1,5],2) // 10
maxSubArraySum([1,2,5,2,8,1,5],4) // 17
maxSubArraySum([4,2,1,6],1) //6
maxSubArraySum([4,2,1,6,2],4) // 13
maxSubArraySum([],4) // null
🔸 풀이 전 어떻게 구성할지 생각해봤다
null을 리턴한다 -> 배열의 길이보다 n의 숫자가 클때temp변수에 첫 비교 값인 n-1 인덱스까지의 값의 합(처음부터 n개 요소의 합) 할당temp 값과 result를 비교해서 둘 중 큰 숫자를 result에 할당한다.result를 할당한다.const maxSubarraySum = (arr, n) => {
if (arr.length < n) return null;
let result = 0;
let temp = 0;
for (let i = 0; i < n; i++) {
result += arr[i];
}
temp = result;
for (let j = n; j < arr.length; j++) {
temp = temp - arr[j - n] + arr[j];
result = Math.max(result, temp);
}
return result;
};
위 풀이와 동일 시간 복잡도는 O(N)