728x90
슬라이딩 윈도우(Sliding Window)
- 슬라이딩 윈도우 알고리즘은 투 포인터와 유사하지만, 부분 배열의 길이를 고정해서 탐색하는 방법
- 투 포인터와 달리 두 개의 포인터 변수를 사용하지 않고, 고정적인 부분 배열의 크기와 한 개의 포인터 변수를 알고 있다면, 부분 배열의 양끝의 연산으로 정확한 값을 도출해낼 수 있다.
[1, 10, 3, 2, 23, 10, 12] 라는 배열이 주어졌을 때 예시
배열 안에서 네 개의 연속된 수열의 최댓값을 찾는다고 가정했을 때,
↓ ↓
[1, 10, 3, 2, 23, 10, 12] sum = 1 + 10 + 3 + 2
↓ ↓
[1, 10, 3, 2, 23, 10, 12] sum = 10 + 3 + 2 + 23 (1을 빼주고, 23을 더해준 값)
↓ ↓
[1, 10, 3, 2, 23, 10, 12]
↓ ↓
[1, 10, 3, 2, 23, 10, 12]
최초 길이의 값을 변수로 저장하고, window를 움직일때 마다, 양 끝 값을 더하고, 빼주기만 하면 된다.
연습문제
https://www.acmicpc.net/problem/21921
21921번: 블로그
첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다
www.acmicpc.net
'Algorithm > Algorithm' 카테고리의 다른 글
[Algorithm] 다익스트라 알고리즘 (0) | 2023.03.31 |
---|---|
[Algorithm] 분할 정복(Divide and Conquer) (0) | 2023.02.28 |
[Algorithm] 투 포인터(Two Pointer) (0) | 2023.02.15 |
[Algorithm] Big-O 관점에서의 배열과 객체 (0) | 2023.02.13 |
[Algorithm] Big-O-Notation (0) | 2023.02.12 |