import java.util.*;
class Main {
public int solution(int n, int k, int[] arr){
int answer, sum=0;
for(int i=0; i<k; i++) sum +=arr[i];
answer = sum;
for(int i=k; i<n; i++){
sum += (arr[i]-arr[i-k]);
answer = Math.max(answer, sum);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int k=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n,k,arr));
}
}
sliding window
말그대로 배열안에서 연속된 k개의 원소의 합을 구할 때 한칸씩 밀고가며
한칸씩 증가시킨 인덱스의 원소는 더하고, k번째 전의 원소는 빼주는 방법이다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 1940번- 주몽 (0) | 2022.06.22 |
---|---|
[JAVA] 알고리즘 : Sliding window&two pointers - 연속부분수열 (0) | 2022.06.21 |
[JAVA] 알고리즘 : two pointers - 공통원소구하기 (0) | 2022.06.20 |
[JAVA] 알고리즘 : two pointers - 두 배열 합치기 (0) | 2022.06.20 |
[JAVA] 알고리즘 : 문자열 - 단어 뒤집기 (0) | 2022.06.20 |