알고리즘 정리
슬라이딩 윈도우
조코조
2023. 4. 18. 12:10
Q. arr=[12, 15, 11, 20, 25, 10, 20, 19, 13, 15]이 있다. 연속된 숫자 3개씩 묶어서 더 했을 때 가장 큰 수는?
function solution(k, arr) {
let answer,
sum = 0;
for (let i = 0; i < k; i++) sum += arr[i]; //12+15+11;
answer = sum;
for (let i = k; i < arr.length; i++) {
sum += arr[i] - arr[i - k]; //밑의 사진 참고!
answer = Math.max(answer, sum);
}
return answer;
}
let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(3, a));

- 처음부터 시작되는 3가지 숫자는 for문을 통해서 더해주고 그 값을 비교할 값으로 만들어준다.
answer= sum ;
- 그리고 다시 for문을 만든다. 이번에는 k번째부터 시작한다. 지금으로 보면 3부터 시작이다.
for(let i=k; i<arr.length; i++){}
- sum+=arr[i]-arr[i-k]을 통해서 슬라이딩윈도우를 실행한다.(옆의 사진 참고)