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]을 통해서 슬라이딩윈도우를 실행한다.(옆의 사진 참고)
'알고리즘 정리' 카테고리의 다른 글
기본 재귀함수 (0) | 2023.05.24 |
---|---|
Queue 자료구조 (0) | 2023.05.02 |
스택자료구조 사용한 후위식 (0) | 2023.05.01 |
해쉬 알고리즘 (1) | 2023.04.20 |
빈도 수 찾기 (0) | 2022.11.14 |