본문 바로가기

Algorithm

[백준] JAVA - 2559.수열

생각

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