백준 기상청 인턴 신현수

KIMYEONGJUN·2024년 10월 31일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 두 개의 정수 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();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글