problem-2559

유성·2022년 11월 15일
0

PS

목록 보기
19/47

과정
1. O(n)으로 해결하기 위해 시간을 단축시킬 수 있는 방법은, for문 한번을 써야한다.
2. 합 s 를 설정한다.
3. for문 안에서 초기 s를 0부터 k-1까지만큼 더한 값을 넣는다.
4. 그 이후에는 s에서 i-1번째 (그 다음 시작 인덱스의 이전 인덱스) 의 값을 뺀다.
5. 그리고 i+k-1 (그 다음 시작 인덱스의 마지막 인덱스)의 값을 더한다.
6. 최댓값 출력
7. 단, 배열에 음수가 있을 수 있기 때문에 ans를 -1e9로 설정

import sys
input=sys.stdin.readline
n,k=map(int,input().split())
a=list(map(int,input().split()))
ans=-1e9
s=0
for i in range(0,n-k+1):
    if i==0: 
        s=sum(a[:k])
    else:
        s-=a[i-1]
        s+=a[i+k-1]
    ans=max(s,ans)

print(ans)

time:30

profile
기록

0개의 댓글