/
▷ 슬라이딩 윈도우 알고리즘
탐색 구간이 정해져있을 때 빠른 검색을 위해 사용한다 (시간복잡도를 줄이려고)
만약 탐색 구간이 정해져있지 않다면, Two pointer를 쓰면 된다.
예를 들어) 10개의 정수 중 연속된 3개의 구간의 합이 최대일 경우
그 최대값을 구하라는 문제가 있을 수 있다.
ex) n개의 정수 중 연속된 m개의 구간의 합이 최대일 경우 그 최대값은?
**
10 5
3 -2 -4 -9 0 3 7 13 8 -3
입력시 출력결과: 31
10 2
3 -2 -4 -9 0 3 7 13 8 -3
입력시 출력결과는: 21
# 슬라이딩 윈도우
n, m = map(int, input().split())
arr = list(map(int, input().split()))
sum = 0
# 첫 M개 구간의 합
for i in range(m):
sum += arr[i]
Max = sum
# 구간 이동하면서 sum 구하고
# max 값 갱신하기
for i in range(n - m):
sum += arr[i + m]
sum -= arr[i]
if sum > Max:
Max = sum
print(Max)
'Game AI & Unity > concepts' 카테고리의 다른 글
[최소 신장 트리 MST(Minimum Spanning Tree)] 최소 비용으로 정점 연결시키기 (0) | 2024.02.23 |
---|---|
[Two Pointer] 탐색구간이 정해져있지 않을 때, 구간 합 구하기 (0) | 2024.02.23 |
[Hash] Changing 방식 vs Open Addressing 방식 (0) | 2024.02.23 |
Greedy (0) | 2024.02.23 |
Flood Fill (0) | 2024.02.23 |