Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- map
- 페이지네이션
- meatadata
- async
- code-push-standalone
- react
- set
- reactnative
- Spring
- supabase authentication
- javascript
- app.post
- 코드푸시
- 이진탐색
- 슬라이딩윈도우
- Filter
- TS
- generic
- array
- 상속
- xlsx-js-style
- codepush
- extends
- 스크롤이벤트
- interface
- Next.js
- supabase 페이지네이션
- supabase auth
- 타입스크립트
- 글또10기x코드트리
Archives
- Today
- Total
rhanziy
슬라이딩 윈도우 알고리즘 본문
슬라이딩 윈도우 알고리즘?
하나의 특정 범위를 지정해놓고, 윈도우를 이동시키면서 범위 내에 있는 원소들을 계산해주는 원리.
배열과 그 배열의 subArray(부분배열)의 원소들을 어떠한 조건하에 계산하는 상황에서 사용된다. O(n)의 시간복잡도.
ex. 구간 합 구하기, 일정한 사이즈의 범위 값 계산하기, 가장 긴 부분 문자열 구하기 등.
예제) 사이즈가 K인 부분배열의 최대 합을 구하시오.
Function maxSumOfArray(arr: number[], k:number){
let windowSum = 0;
let maxSum = -Infinity; // arr에 음수가 포함될 경우 대비
for(let i = 0; i < arr.length; i++){
windowSum += arr[i];
if(i >= k-1){
maxSum = Math.max(windowSum, maxSum);
windowSum -= arr[i - (k-1)];
}
return maxSum;
}
}
maxSumOfArray([5,7,-1,14,3,12,1], 3) // 29
// K = 3
// [5,7,-1] -> 11
// [7,-1,14] -> 20
// [-1,14,3] -> 16
// [14,3,12] -> 29
// [3,12,1] -> 16
// [12,1,4] -> 17
'Html_css_js' 카테고리의 다른 글
배열 중복 요소 제거, 객체 배열정렬 (0) | 2024.09.10 |
---|---|
이진탐색 알고리즘 (1) | 2024.09.10 |
재귀함수 (0) | 2024.09.10 |
js - jquery 동적으로 생성한 버튼 기능구현(delete) (0) | 2023.09.06 |
js - 선택한 이미지 미리보기 구현 (2) | 2023.09.06 |