열렬히.뛰기

2559: 수열

알고리즘: 실전 > 백준 단계별로 풀기: 10번 ~ 25번 > 2559: 수열

푸는 법

  1. n : 전체 날짜 수, k : 연속적인 날짜
  2. 온도가 적힌 수열을 받는다. ⇒ celcius
  3. 누적합이 들어갈 수열 (cumsum)을 생성
  4. cumsum의 첫 번째에는 celcius의 0번째 ~ k-1번째까지 수의 합이 들어가야 한다.
  5. cumsum의 두 번째에는 celcius의 1번째 ~ k번째 까지의 수의 합 cumsum의 세 번째에는 celcius의 2번째 ~ k+1번째 까지의 합….
  6. cumsum의 i 번째 = (cumsum의 i-1번째) - (celcius의 i-1번째) + (celcius의 i+k-1번째)
  7. cumsum의 최댓값 = 정답

코드

python
"""수열"""
n, k = map(int, input().split())
celcius = list(map(int, input().split()))
cumsum = [0] * (n-k+1)

for i in range(k):
    cumsum[0] += celcius[i]

for i in range(1, n-k+1):
    old = celcius[i-1]
    new = celcius[i+k-1]
    cumsum[i] = cumsum[i-1] + new - old
print(max(cumsum))