Backjun-2559(数列)
質問元:https://www.acmicpc.net/problem/2559
質問する
毎朝9時に学校で測定した温度がある整数の数列の場合、数日連続の温度の和が最大です.
例えば、10日間の温度が与えられた場合、以下のようになる.
3 -2 -4 -9 0 3 7 13 8 -3
2日間連続したすべての温度の和は以下の通りである.
このとき、温度の和の最大値は21です.
もう1つの例は、上記温度が与えられた場合、5日間連続したすべての温度の和を以下に示す.
このとき、温度の和の最大値は31である.
毎日測定される温度が整数の数列に与えられる場合、数日連続の温度の和の最大値を計算するプログラムを作成します.
が連続して行われたK日の中で最大の日を見つけなければならない. まずK個和を最初から求める. それから1つの格を移動して、左の値を除いて、右の値を加えて、最低価格を探します. 最初は間違った問題を理解していて、長い時間がかかりました...
質問する
毎朝9時に学校で測定した温度がある整数の数列の場合、数日連続の温度の和が最大です.
例えば、10日間の温度が与えられた場合、以下のようになる.
3 -2 -4 -9 0 3 7 13 8 -3
2日間連続したすべての温度の和は以下の通りである.
このとき、温度の和の最大値は21です.
もう1つの例は、上記温度が与えられた場合、5日間連続したすべての温度の和を以下に示す.
このとき、温度の和の最大値は31である.
毎日測定される温度が整数の数列に与えられる場合、数日連続の温度の和の最大値を計算するプログラムを作成します.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
int N = Integer.parseInt(tokenizer.nextToken());
int K = Integer.parseInt(tokenizer.nextToken());
tokenizer = new StringTokenizer(reader.readLine());
int[] temp = new int[N];
for (int i = 0; i < N; i++) {
temp[i] = Integer.parseInt(tokenizer.nextToken());
}
int answer = Integer.MIN_VALUE;
int sum = 0;
// 최초 합
for (int i = 0; i < K; i++) {
sum += temp[i];
}
answer = Math.max(answer, sum);
for (int i = 1; i <= N - K; i++) {
sum = sum - temp[i - 1] + temp[i + (K - 1)];
answer = Math.max(answer, sum);
}
System.out.println(answer);
}
}
Reference
この問題について(Backjun-2559(数列)), 我々は、より多くの情報をここで見つけました https://velog.io/@ghc1124/백준-2559번수열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol