09009

[백준 2559번] 수열 본문

Algorithm/누적합
[백준 2559번] 수열
09009

문제 보기

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

 

2559번: 수열

첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기

www.acmicpc.net

 

 

소스 코드

import sys
input = sys.stdin.readline

n, k = map(int,input().split())
arr = list(map(int,input().split()))

num = 0 # 부분합
cnt = 0 # 합한 원소의 개수

answer = []
for i in range(len(arr)):
    num += arr[i]
    cnt += 1
    if cnt == k:
        answer.append(num)
        cnt -= 1
        num -= arr[i-k+1]

print(max(answer))

 

문제 해결

사실 문제의 그림에서 힌트가 있었다. 

리스트에서 반복문을 돌려준 다음, 합한 원소의 개수가 k개가 되었을 때 그 합을 저장해준다.

그 후, 리스트의 가장 앞에 있는 원소 하나만 빼주고 다시 다음 원소를 더하는 과정을 반복해서 해결한다.

 

'Algorithm > 누적합' 카테고리의 다른 글

[백준 11659번] 구간 합 구하기 4  (0) 2023.10.19
Comments