알고리즘
[백준] 수열 JAVA
wjdwwidz
2024. 11. 1. 17:01
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);
}
}