๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

[BOJ] 21921 ๋ธ”๋กœ๊ทธ - Java

category Algorithm/BOJ 2023. 5. 12. 20:23

https://www.acmicpc.net/problem/21921

 

21921๋ฒˆ: ๋ธ”๋กœ๊ทธ

์ฒซ์งธ ์ค„์— $X$์ผ ๋™์•ˆ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์–ด์˜จ ๋ฐฉ๋ฌธ์ž ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์ตœ๋Œ€ ๋ฐฉ๋ฌธ์ž ์ˆ˜๊ฐ€ 0๋ช…์ด๋ผ๋ฉด SAD๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์ตœ๋Œ€ ๋ฐฉ๋ฌธ์ž ์ˆ˜๊ฐ€ 0๋ช…์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋‘˜์งธ ์ค„์— ๊ธฐ๊ฐ„์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค

www.acmicpc.net


1. ๋ฌธ์ œ

์ด N์ผ ์ค‘ X์ผ ๋™์•ˆ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์–ด์˜จ ๋ฐฉ๋ฌธ์ž ์ˆ˜์™€ ํ•ด๋‹น ๋ฐฉ๋ฌธ์ž ์ˆ˜์˜ ๊ธฐ๊ฐ„์ด ๋ช‡ ๊ฐœ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

 

2. ํ’€์ด

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋ฌธ์ œ์ด๋‹ค.

์ฒ˜์Œ์—๋Š” ์ด์ค‘ for๋ฌธ์œผ๋กœ ์ž๋ฆฌ๋งˆ๋‹ค X๋ฒˆ์”ฉ for๋ฌธ์„ ๋Œ๋ ค์ฃผ์–ด ์ด๋ฏธ ์ด์ „์— ํ•œ ๋ฒˆ ๋”ํ•ด์ง„ ๊ฐ’๋“ค์ด๋”๋ผ๋„ ์ค‘๋ณต์œผ๋กœ ๋‹ค์‹œ ์—ฐ์‚ฐํ•ด์„œ ํšจ์œจ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ์ œ์ถœํ–ˆ์„ ๋•Œ๋„ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋Š” for๋ฌธ ํ•œ ๋ฒˆ๋งŒ์œผ๋กœ ๋งจ ์•ž๊ฐ’์€ ๋นผ๊ณ  ๋งจ ๋’ท๊ฐ’์€ ๋”ํ•˜๊ณ  ์ด ๊ณผ์ •์„ ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ์ฝ”๋“œ

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

/**
 * ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ
 * ๋ˆ„์ ํ•ฉ ๋ฐฉ๋ฒ•
 * ํ•ต์‹ฌ : ์ค‘๋ณต๋˜๋Š” ์—ฐ์‚ฐ์„ ์ œ๊ฑฐ
 */
public class boj_๋ธ”๋กœ๊ทธ {

    static int X, N;
    static int[] arr;

    public static void main(String[] args) throws Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        X = Integer.parseInt(st.nextToken());
        arr = new int[N];

        st = new StringTokenizer(br.readLine());
        for (int i=0; i<N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        //์ž…๋ ฅ ๋

        solution();
    }

    static void solution() {
        int max = 0;
        int sum = 0;
        int cnt = 1;
        for (int i=0; i<X; i++) {
            sum += arr[i]; //์ดˆ๊ธฐ๊ฐ’
        }
        max = sum;

        for (int i=X; i<N; i++) {
            sum -= arr[i-X];
            sum += arr[i];
            if (max == sum) cnt++;
            else if (max < sum) {
                max = sum;
                cnt = 1;
            }
        }
        if (max == 0) System.out.println("SAD");
        else {
            System.out.println(max);
            System.out.println(cnt);
        }
    }

//    static void lastSolution() {
//        int max = 0;
//        int cnt = 0;
//        for (int i=0; i<N; i++) {
//            if (i+X-1 >= N) break;
//            int sum = 0;
//            for (int j=0; j<X; j++) { //์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•ˆ์ข‹์€ ์  : ์ด๋ฏธ ๊ณ„์‚ฐ๋œ ๊ฐ’๋“ค์ž„์—๋„ ๋งค๋ฒˆ ์ค‘๋ณตํ•ด์„œ ๋”ํ•ด์•ผ ํ•œ๋‹ค. ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋Š” ์ด๋Ÿฐ ์ค‘๋ณต๋˜๋Š” ํ•ฉ ์—ฐ์‚ฐ ๊ณผ์ •์„ ์ œ๊ฑฐํ•œ ๋ฐฉ๋ฒ•.
//                sum += arr[i+j];
//                if (max == sum) cnt++;
//                else if (max < sum) {
//                    max = sum;
//                    cnt = 1;
//                }
//            }
//        }
//        if (max == 0) sb.append("SAD");
//        else {
//            sb.append(max).append("\n").append(cnt);
//        }
//    }
}

 

4. ์‚ฌ๋‹ด

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ, ๋ˆ„์ ํ•ฉ ๋ฌธ์ œ๋ฅผ ์‹ธํ”ผ ์ดˆ๊ธฐ์— ํ•œ ๋ฒˆ ํ’€์–ด๋ดค๋Š”๋ฐ ์ด๋ฒˆ์— ๋‹ค์‹œ ํ’€์–ด๋ณด๋ฉด์„œ ๊ฐœ๋…์„ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค.