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);
}
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 다음 큰 숫자 | bin 을 통해 이진수로 변경하기 (0) | 2024.11.10 |
---|---|
[softeer] 8단 변속기 JAVA | 배열 초기화, else if (0) | 2024.11.02 |
[softeer] 연탄의 크기 JAVA | ArrayList vs 배열 (int[]), Math.max(A,B) (0) | 2024.11.01 |
[softeer] 근무시간, 바이러스 JAVA | scanner, substring, Integer.parseInt, Int scanner.nextInt(), (0) | 2024.10.31 |
[프로그래머스] 귤 고르기 python | Counter 함수로 dic 생성하기 (0) | 2024.10.30 |