728x90
1. 슬라이딩 윈도우란
배열, 문자열 또는 리스트와 같은 선형 데이터 구조에서 특정 범위나 구간을 효율적으로 처리하기 위한 기법으로,
이 알고리즘은 고정된 크기의 범위를 유지하거나 가변적인 범위를 움직이며 데이터를 처리한다.
부분 배열을 어떠 조건하에서 계산하는 경우, 구간 합 구하기, 부분 문자열 구하기 등에 활용하며,
불필요한 계산을 줄이고 효율적으로 해결할 수 있게 해준다.
1. 윈도우
연속된 데이터의 부분집합으로, 일반적으로 배열의 인덱스나 문자열의 일부로 표현된다.
2. 윈도우의 크기
고정 크기 : 윈도우의 크기가 일정.
가변 크기 : 윈도우의 크기가 문제의 조건에 따라 변함
3. 슬라이딩
윈도우의 시작 또는 끝을 한 칸씩 이동하며 데이터를 처리하고,
이전 윈도우에서 계산한 결과를 활용해 중복 계산을 피한다.
2. 과정 및 코드 예
초기에 구간을 설정하고, 윈도우를 한 칸 또는 여러 칸 오른쪽으로 이동한다.
새롭게 추가된 요소를 반영하고, 윈도우에서 벗어난 요소를 제거하낟.
이동 중에 원하는 결과를 계산
배열에서 연속 부분 구간의 합이 S 이상이 되는 가장 짧은 구간의 길이 구하기
슬라이딩 윈도우를 사용해 구간을 확장 및 축소하며 효율적으로 해결하며,
불필요한 계산을 줄이고 O(n) 시간 복잡도를 유지한다.
이중 루프로 구간을 조절하며 최적의 해를 탐색한다.
728x90
'Algorithm Practice' 카테고리의 다른 글
LZW(Lempel, Ziv, Welin) 압축 알고리즘 (0) | 2024.12.16 |
---|---|
페이지 교체 알고리즘(FIFO, LRU, LFU) (0) | 2024.12.06 |
투 포인터(Two Pointers)알고리즘 (0) | 2024.10.24 |
동적 계획법(DP,Dynamic Programing) (0) | 2024.10.24 |
이분 탐색(Binary Search) (1) | 2024.10.23 |