백준 2559번: 수열 python

tomkitcount·2025년 5월 28일

매일 알고리즘

목록 보기
63/301

https://www.acmicpc.net/problem/2559


문제 접근

정수가 N개 주어지고개수 K가 주어졌을 때
어떠한 지점에서의 연속한 K개의 합이 가장 클때를 출력하는 문제

해답 및 풀이

슬라이딩 윈도우 방식으로 풀었다.
배열에서 연속된 일정 범위(k개)의 값만을 이동하며 계산할 때 쓰는 기법

import sys
input = sys.stdin.readline

# n: 전체 날짜 수, k: 연속적인 날짜 수
n, k = map(int, input().split())
temps = list(map(int, input().split()))

# 초기 윈도우 합 계산 (0번 index부터 k개까지의 합)
window_sum = sum(temps[:k])
max_sum = window_sum

# 윈도우를 한 칸씩 이동하면서 합 갱신
for i in range(k, n):
    # 왼쪽 값 제거하고, 오른쪽 새 값 추가
    window_sum = window_sum - temps[i - k] + temps[i]
    # 최대값 갱신
    max_sum = max(max_sum, window_sum)

print(max_sum)
profile
To make it count

0개의 댓글