문제 - 2559
누적합, 투포인터, 슬라이딩윈도우를 이용할 수 있다고 하는데 나는 슬라이딩 윈도우가 먼저 생각이 나서 고정적인 슬라이딩 윈도우를 이용했다.
k =2가 일 때
처음에 0,1의 인덱스를 더한 값인 경우 최대값으로 설정을 해준다.
그런 다음 2개의 이상일 경우 i-k 즉 2칸을 유지하면서 값을 설정해주며 최댓값을 찾는다.
해당 소스코드를 다시보니 ans = Integer.MIN_VALUE로 설정하지 않아도 될 거 같다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int ans = Integer.MIN_VALUE;
int n = sc.nextInt();
int k = sc.nextInt();
int []ary = new int[n];
for(int i=0;i<ary.length;i++)
{
ary[i] = sc.nextInt();
}
int sum =0;
for(int i=0;i<ary.length;i++)
{
sum += ary[i];
if(i == k-1)
{
ans = sum;
}
if(i >= k)
{
sum -= ary[i-k];
ans = Math.max(ans,sum);
}
}
System.out.println(ans);
}
}