[Java] 백준 12847 꿀 아르바이트

Lee GaEun·2025년 1월 17일

[Java] 알고리즘

목록 보기
43/93

12847 꿀 아르바이트 문제 링크

문제


#1

import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        int[] arr = new int[N];
        for(int i=0; i<N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        int start = 0;
        int end = M;
        long answer = 0;
        for(int i=start; i<end; i++) {
            answer+=arr[i];
        }

        long max = answer;
        while (end<N) {
            max = max - arr[start] + arr[end];
            answer = Math.max(answer, max);
            start++;
            end++;
        }
        System.out.println(answer);
    }
}
  • answer = Math.max(answer, answer-arr[start]+arr[end]); 이거를
  • max = max - arr[start] + arr[end]; answer = Math.max(answer, max); 이렇게 바꿈
  • 첫 코드는 answer에서 arr[start]를 두 번 빼는 꼴임
    • answer를 갱신할 때 (슬라이딩 윈도우의 개념을 잘못 적용해서)
    • arr[start]를 빼는 코드에서
  • 인데 answer를 갱신할 때 arr[start]를 이미 빼줬다는게 이해가 잘 안됨
  • 좀 힘겹게 성공..?
profile
I will give it my all (๑•̀o•́๑)ง

0개의 댓글