728x90
Sliding Window 란?
고정된 크기의 윈도우가 이동하면서 윈도우 내의 데이터를 이용해 문제를 풀어가는 알고리즘
배열, 리스트의 요소의 일정 범위의 값을 비교할 때 유용한 알고리즘이다.
def maxSum(arr,k):
n = len(arr) # length of arr
if n<k: /# 윈도우 사이즈보다 len이 작을때
return -1
window_sum = sum(arr[:k]) # k까지의 합계
max_sum = window_sum
for i in range(n-k): # 윈도우에서 첫 원소 삭제, 새로운 요소 삽입
window_sum=window_sum - arr[i]+arr[i+k]
max_sum = max(window_sum, max_sum)
return max_sum
arr = [16, 12, 9, 19, 11, 8]
k=3
print(maxSum(arr,k))
-> 주어진 arr에서 더해서 최대가 되는 값 찾기
참고
https://www.thecrazyprogrammer.com/2017/05/sliding-window-protocol-program-c.html
728x90
'CS > 알고리즘' 카테고리의 다른 글
[알고리즘] 최적 이진 탐색 트리(Optimal Binary Search Trees) (0) | 2024.04.10 |
---|---|
[알고리즘] 연쇄 행렬 곱셈(Chained Matrix Multiplication) (0) | 2024.04.10 |
[알고리즘] 플로이드 알고리즘(Floyd Algorithm) (1) | 2024.04.10 |
[알고리즘] 이항계수(The Binomial Coefficient) (0) | 2024.04.10 |
[알고리즘] 연속 부분 수열의 합 (0) | 2022.06.20 |