728x90
반응형
문제
코드
import sys
input = sys.stdin.readline
n, x = map(int, input().split())
arr = list(map(int, input().split()))
init_data = sum(arr[0:0 + x])
visitor = [init_data]
for i in range(1, n - x + 1):
visitor.append(visitor[i-1] - arr[i - 1] + arr[i + x - 1])
if max(visitor) == 0:
print("SAD")
else:
print(max(visitor), visitor.count(max(visitor)), sep="\n")
`슬라이딩 윈도우` 알고리즘은 고정 범위를 탐색할 때 효율적임
한 칸을 전진하면 윈도우의 가장 앞의 값을 빼고, 다음으로 윈도우에 들어오는 값을 추가한다.
[참고]
728x90
반응형
'Algorithm - 알고리즘 연습' 카테고리의 다른 글
알고리즘 문제풀이 복습 Queue (0) | 2024.04.04 |
---|---|
백준 18870번(좌표 압축) - Python 딕셔너리 자료형(Dictionary) (0) | 2024.02.23 |
백준 11053번(가장 긴 증가하는 부분 수열) - Python 다이나믹 프로그래밍(동적 계획법) (0) | 2024.02.23 |
백준 15649(N과 M(1)) - Python 순열(Permutations) (0) | 2024.02.22 |
백준 11047번(동전 0) - 그리디 알고리즘 (0) | 2024.02.20 |