생각
K일이 주어졌을때 연속적으로 K일만큼의 온도의 합이 가장 큰지를 찾는 문제입니다.
K일이 고정적으로 입력에서 받기때문에 이를 파라미터로 받아 반복문을 한번만 돌면서 찾으면됩니다.
K 구간 만큼의 합을 구하는 함수를 따로 만들어 구했습니다. 이때 K 구간의 시작인덱스는 N-K와 같을때까지만 시작할수있습니다.
Java code
package com.java.algorithm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* 연속적인 며칠동안의 온도의 합이 가장 큰지? 이때 합 찾기
* 1 <= K <= N
* */
public class Baekjoon_2559_수열 {
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] init = br.readLine().split(" ");
int N = Integer.parseInt(init[0]);
int K = Integer.parseInt(init[1]);
arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int ans = Integer.MIN_VALUE;
for (int j = 0; j <= N-K; j++) {
ans = Math.max(ans, getSum(j,K));
}
System.out.println(ans);
}
//start~start+day 까지 구간의 합 리턴
private static int getSum(int start, int day) {
int sum = 0;
for (int i = start; i < start+day; i++) {
sum += arr[i];
}
return sum;
}
}
'Algorithm' 카테고리의 다른 글
[백준] JAVA - 1063.킹 (0) | 2021.02.28 |
---|---|
[백준] JAVA - 1018.체스판다시칠하기 (0) | 2021.02.28 |
[백준] JAVA - 10158.개미 (0) | 2021.02.28 |
[백준] JAVA - 15686.치킨 배달 (0) | 2021.02.21 |
[백준] JAVA - 3109.빵집 (0) | 2021.02.18 |