μ΅œλŒ€ 1 λΆ„ μ†Œμš”

πŸ“ [S3_2559] μˆ˜μ—΄

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 br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        
        // input
        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        int[] arr = new int[N];
        st = new StringTokenizer(br.readLine()," ");
        for(int i=0; i<N; i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }


        // 총 λ„λŠ” 횟수
        int cnt = N-K+1;

        // μ΅œλŒ“κ°’
        int max = Integer.MIN_VALUE;

        for(int i=0; i<cnt; i++){
            // 연속 K일 총 ν•©
            int sum = 0;
            for(int j=i; j<K+i; j++){
                sum += arr[j];
            }
            // μ΅œλŒ“κ°’ κ΅¬ν•˜κΈ°
            max = Math.max(max, sum);
        }

        System.out.println(max);
    }
}

πŸ€” λ‚˜μ˜ 생각

κ°„λ‹¨νžˆ ν’€ 수 μžˆμ—ˆλ‹€. ν•˜λ‚˜μ˜ λ†“μΉœ 것이 μžˆμ§€λ§Œ..γ…‹γ…‹

  1. λ¨Όμ € Nκ³Ό Kλ₯Ό μ΄μš©ν•΄ λ°˜λ³΅λ¬Έμ„ λͺ‡ 번 λŒμ•„μ•Ό ν•˜λŠ”μ§€ κ΅¬ν•œλ‹€ ( cnt ) -> Kκ°€ N을 λ„˜μ–΄κ°€λ©΄ μ•ˆλ˜κΈ° λ•Œλ¬Έμ— N-K+1둜 ꡬ해쀀닀
  2. cnt만큼 λ°˜λ³΅λ¬Έμ„ λŒλ©΄μ„œ K만큼 μ—°μ†λœ 일의 μ˜¨λ„λ₯Ό λ‹€ 더해쀀닀.
  3. κ·Έ 값듀을 max κ°’κ³Ό λΉ„κ΅ν•΄μ„œ max 값을 κ°±μ‹ ν•΄μ€€λ‹€.
  4. maxκ°’ 좜λ ₯


μ²˜μŒμ— ν‹€λ¦¬κΈΈλž˜ λ­”κ°€ μƒκ°ν•΄λ³΄λ‹ˆ λ§ˆμ΄λ„ˆμŠ€ 값도 μžˆμ—ˆλ˜ 것이닀. κ·Έλž˜μ„œ maxλ₯Ό μ²˜μŒμ— 0으둜 μ΄ˆκΈ°ν™”ν•΄μ£ΌλŠ”κ²Œ μ•„λ‹ˆλΌ Integer.MIN_VALUE둜 μ΄ˆκΈ°ν™” ν•΄μ€˜μ•Ό ν–ˆλ‹€