inblog logo
|
stupefyee
    기술정리

    Sliding Window (슬라이딩 윈도우)

    Stupefyee's avatar
    Stupefyee
    Jul 09, 2025
    Sliding Window (슬라이딩 윈도우)
    Contents
    1. 특징2. 적용 예시3. 자주 쓰이는 유형
    💡
    • 연속된 구간(subarray, substring 등)을 효율적으로 탐색하는 알고리즘 기법
    • 범위를 유지한 채 좌우로 “창문”을 미끄러뜨리며 전체 데이터를 확인

    1. 특징

    • 시간복잡도: O(n)
    • 반복적인 계산 없이 이전 결과 재사용
    • 고정 길이 or 가변 길이 구간 모두 가능

    2. 적용 예시

    가. 문제: 배열에서 연속된 k개의 숫자 합 중 최대값 구하기

    int[] arr = {1, 3, 2, 5, 1, 1, 2}; int k = 3;

    나. 슬라이딩 윈도우 풀이

    int sum = 0; for (int i = 0; i < k; i++) { sum += arr[i]; // 초기 윈도우 } int max = sum; for (int i = k; i < arr.length; i++) { sum += arr[i] - arr[i - k]; // 앞 빼고 뒤 더하기 max = Math.max(max, sum); }
    • 윈도우를 한 칸씩 오른쪽으로 이동
    • 맨 앞 값 제거 + 새 값 추가

    다. 시각적 흐름

    notion image

    3. 자주 쓰이는 유형

    • 최댓값/최솟값 구간 합
    • 특정 조건 만족하는 최장/최단 부분 문자열
    • 누적합 기반 문제
    Share article
    Contents
    1. 특징2. 적용 예시3. 자주 쓰이는 유형

    stupefyee

    RSS·Powered by Inblog