[백준] 수열 JAVA

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

 

 

 

슬라이딩 윈도우 문제

1. 주어진 갯수 k 까지 값을 구한 뒤 초기 sum으로 설정 

2. i=k , i<n 까지 범위를 두고 sum += items[k] - items[i-k] 

3. 매 반복 마다 sum과 answer중 max 를 찾아 저장한다.

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();

        int[] items = new int[n];
        for (int i =0; i<n; i++){
            items[i] = sc.nextInt();
        }


 
        int sum = 0;

        for (int i=0; i<k; i++){
            sum += items[i];
        }
        int answer = sum;

        for (int i=k; i<n; i++){
            sum += items[i] - items[i-k];
            answer = Math.max(answer,sum);
        }

        System.out.print(answer);
    }
}