import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main2559 {
static int N;
static int K;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken()); //온도를 측정한 전체 날짜 수 N
K = Integer.parseInt(st.nextToken()); //합을 구하기 위한 연속적인 날짜의 수 K
int[] arr = new int[N];
st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int max = Integer.MIN_VALUE;
for(int i=0; i<=N-K; i++) {
int sum = 0;
for(int j=i; j<i+K; j++) { //arr[i]~arr[i+K] 까지의 합을 구한다
sum += arr[j];
}
max = Math.max(max, sum); //max와 sum을 비교
}
System.out.println(max);
}
}
1 번째 방법 : 2차 for
package Cho.week_4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main2559_1 {
static int N;
static int K;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken()); //온도를 측정한 전체 날짜 수 N
K = Integer.parseInt(st.nextToken()); //합을 구하기 위한 연속적인 날짜의 수 K
int[] arr = new int[N];
st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int sum = 0;
for(int i=0; i<K; i++) {
sum += arr[i];
}
int max = sum;
for(int i=1; i<=N-K; i++) {
sum -= arr[i-1];
sum += arr[i+K-1];
max = Math.max(sum, max);
}
System.out.println(max);
}
}
2번째 방법 1차 for문
앞의 값을 빼고, 뒤의 값을 넣어주면서 검사
'알고리즘 & 자료구조 > 백준' 카테고리의 다른 글
백준 1269 (0) | 2021.12.12 |
---|---|
백준 2491 (0) | 2021.12.11 |
백준 15651 (수정) (0) | 2021.12.09 |
백준 15649 (수정) (0) | 2021.12.08 |
백준 13335 (0) | 2021.12.07 |