static int N, M;
static int[] arr;
static void input()
{
N = scan.nextInt(); M = scan.nextInt();
arr = new int[N];
for(int i=0; i<N; i++) arr[i] = scan.nextInt();
}
구현
: 연속으로 방문한 방문자 수를 입력할 ArrayList 를 선언해준다.
처음 연속 방문자 수를 체크하고 score에 넣어주고 max 값으로 선언해준다.
int value = 0;
for(int i=0;i<M; i++) value += arr[i];
score.add(value);
int max = value;
처음 방문자 수를 계산했으니 다음 로직을 생각해보자.
이제부터는 매번 계산을 할 필요없이 맨 앞에 값을 빼주고 그 다음 수를 추가해주면 된다.
다시 계산한 값을 score 에 넣어주고 max 값을 갱신해주면 된다.
for(int i=1; i<=N-M; i++) // 3
{
value -= arr[i-1];
value += arr[i+M-1];
score.add(value);
if(max < value) max = value;
}
그 후에 score를 순회하며 최대값과 같은 경우를 찾아 cnt 를 계산해주고 출력해주면 끝이다.