
내가 생각했을때 문제에서 원하는부분
첫째 줄에 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 주어진다.
N은 온도를 측정한 전체 날짜의 수이다.
N은 2이상, 100이하이다. K는 합을 구하기 위한 연속적인 날짜의 수이다.
K는 1과 N 사이의 정수이다.
둘째 줄에는 매일 측정한 온도를 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다.
이 수는 모두 -100이상, 100이하이다.
첫째 줄에,
온도의 수열에서 연속적인 K일의 온도의 합이 최대가 되는 값을 출력한다.
내가 이 문제를 보고 생각해본 부분
N과 K 값 입력을 받는다.
N일간 기온 기록을 한다.
K일간, 가장 큰 기온 합 찾는다.
그리고 결과를 출력한다.
코드로 구현
package baekjoon.baekjoon_24;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 백준 2435번 문제
public class Main823 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N, K값 입력
String[] input = br.readLine().split(" ");
int N = Integer.parseInt(input[0]);
int K = Integer.parseInt(input[1]);
// N일간 기온 기록
int[] T = new int[N];
String[] temp = br.readLine().split(" ");
for(int i = 0; i < N; i++) {
T[i] = Integer.parseInt(temp[i]);
}
// K일간, 가장 큰 기온 합 찾기
int top = Integer.MIN_VALUE; // 가장 큰 기온 합 초기화
int res = 0;
// K일간 기온 합 계산
for(int j = 0; j < K; j++) {
res += T[j];
}
top = res; // 초기 합을 top으로 설정
for(int j = K; j < N; j++) {
res += T[j] - T[j - K]; // 슬라이딩 윈도우
if(res > top) {
top = res; // 최대 기온 합 업데이트
}
}
// 결과 출력
System.out.println(top);
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.