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

[๋ฐฑ์ค€/1018/๊ตฌํ˜„/์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ]

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 4. 11.

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

 

1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ

์ฒซ์งธ ์ค„์— N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 8๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ณด๋“œ์˜ ๊ฐ ํ–‰์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. B๋Š” ๊ฒ€์€์ƒ‰์ด๋ฉฐ, W๋Š” ํฐ์ƒ‰์ด๋‹ค.

www.acmicpc.net

 

 

<<ํ’€์ด>>

 

ํ•˜ ใ…‹ใ…‹ ์ผ๋‹จ ๋‚ด ๋…ผ๋ฆฌ์ ์ธ ์ƒ๊ฐ์€ ํ‹€๋ฆฐ ๊ฒƒ์ด ์—†์—ˆ๋‹ค. ๋‹ค๋งŒ ,, ใ…‹ใ…‹ใ…‹ ํœดใ… 

 

๋ฌธ์ œ๋ฅผ ์ž˜ ๋ชป ์ฝ์—ˆ๋‹ค ใ…‹ใ…‹ใ…‹ ใ… 

 

๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ๋ชจ๋“  ๊ฐ’๋“ค์—์„œ ์ถ”์ถœํ•ด ์ฒด์ŠคํŒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋ƒ?? ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ,

 

๋‹ค์‹œ ์ฝ์–ด ๋ณธ ๊ฒฐ๊ณผ, ์ €๊ธฐ์„œ 8 x 8 ์ž˜๋ผ์„œ ์ƒ‰์„ ์น ํ•˜๋Š” ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

์•„์˜ˆ ์ ‘๊ทผ์ด ์ž˜๋ชป๋œ ๊ฒƒ์ด๋‹ค.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;

class Main {
    static int N, M = 0;

    private int solution(String[] brr, int n, int m) {
        for (int i = 0; i < n; i++) {
            String leng = "";
            String[] a = brr[i].split("W");;
            for(String x : a) leng=leng+x;
            
            N += leng.length();


        }
        M = n * m - N;
        int b = Math.min(N, M);
        if (32 > b) return 32 - b;
        else return 0;
    }



    public static void main(String[] args) throws Exception{
        Main T = new Main();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] arr = br.readLine().split(" ");
        int n = Integer.parseInt(arr[0]);
        int m = Integer.parseInt(arr[1]);
        String[] brr = new String[n];
        for (int i = 0; i < n; i++) {
            brr[i] = br.readLine();
        }
        System.out.println(T.solution(brr, n, m));
    }


}
โ€‹

 

 

 

 

 

์ •๋‹ตํ’€์ด

 

 

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ๊ฒฐ๊ตญ ํฐ์ƒ‰ ํŒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”๊ฑฐ๋ž‘ ๊ฒ€์€์ƒ‰๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ•ฉํ•œ๋‹ค๋ฉด ํŒ์˜ ์นธ ์ˆ˜๊ฐ€ ์ผ์ •ํ•˜๊ฒŒ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” 8x8๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 64๊ฐœ์˜ ํŒ์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•˜๋‚˜๋งŒ ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ  ๊ฑฐ๊ธฐ์„œ 64์—์„œ ๋นผ๊ณ  ๋บ€ ๊ฐ’๊ณผ ๊ธฐ์ค€์œผ๋กœ ์žก์€ ๊ฒƒ ์ค‘์— ์ž‘์€ ๊ฒƒ์„ ์ถ”์ถœํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค !!

 

import java.util.Scanner;

class Main {
    static int min = Integer.MAX_VALUE;
    static String[] brr = {"WBWBWBWB", "BWBWBWBW"};


    private int solution(int startRow, int startCol, String[] arr) {
        int whiteBlock = 0;
        for (int i = 0; i < 8; i++) {
            int row = startRow + i;
            for (int j = 0; j < 8; j++) {
                int col = startCol + j;

                if (arr[row].charAt(col) != brr[row % 2].charAt(j)) whiteBlock++;
            }
        }
        return Math.min(64-whiteBlock, whiteBlock);
    }


    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        in.nextLine();
        String[] arr = new String[n];
        for (int i = 0; i < n; i++) {
            arr[i] = in.nextLine();
        }

        for (int i = 0; i <= n-8; i++) {
            for (int j = 0; j <= m-8; j++) {
               int answer = T.solution(i, j, arr);

               if (min > answer) min = answer;

            }
        }
        System.out.println(min);

    }
}

 

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ๋˜ ์‹ ๊ธฐํ•œ ํ˜•ํƒœ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์ˆ˜ํ•™์ ์ธ ๊ฐœ๋…์ธ๋ฐ r % 2 ์˜ ํ˜•ํƒœ์ด๋‹ค !!

 

์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๋‹น์—ฐํ•œ ์›๋ฆฌ์ด์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋””ํ…Œ์ผ์„ ๋ฐ”๋กœ์ ์šฉํ•˜๋Š”๋ƒ๋Š” ์ •๋ง ๋งŽ์€ ์—ฐ์Šต์ด ํ•„์š”ํ•œ ๊ฒƒ์ด๋‹ค.

 

์ด๋ฅผ ํ™œ์šฉํ•  ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋˜๋Š” ํ˜•ํƒœ๋ฅผ ๊ตณ์ด ๋‹ค ์“ธ ํ•„์š”์—†๊ฒŒ ๋œ๋‹ค.

 

๋„ˆ๋ฌด ์‹ ๊ธฐํ•˜๋‹ค ใ…‹ใ…‹

 

์ด๋Ÿฌํ•œ ์„ผ์Šค ๋‚˜๋„ ๋ฐฐ์šฐ๊ณ  ๊ฐ€๋ จ๋‹ค ~~

 

<<์ถ”๊ฐ€ ๊ณต๋ถ€>>

 

nextInt()

 

nextLine()

 

next()

 

๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ ๋ณด๋ฉด ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ž…๋ ฅ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅด๋‹ค!! 

 

nextInt() -> ์ˆซ์ž๋ฅผ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค.

next() -> ๋‹จ์–ด ํ•œ๊ฐœ๋ฅผ ๋ฐ›๋Š”๋‹ค.

nextLine() -> ํ•œ ์ค„์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค.

 

<์˜ค๋ฅ˜ ๋ฐœ์ƒ>

 

nextInt()๋ฅผ ์“ฐ๊ณ 

 

nextLine() ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

 

๋‚˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅ ์•ˆ ํ–ˆ๋Š”๋ฐ ์ž๋™์œผ๋กœ nextLine()์— ์ž…๋ ฅ์ด ๋˜๋Š”๋ฐ

 

nextInt()๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด /n ์ด๋ผ๋Š” ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ ๊ทธ ๋‹ค์Œ nextLine()์— ์ ์šฉ์ด ๋œ๋‹ค !!

 

์˜ˆ์ „์—๋„ ์ด๋Ÿฐ ๊ฒฝํ—˜์ด ์žˆ์–ด์„œ ๊ณต๋ถ€ํ–ˆ์ง€๋งŒ ๋˜ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ ์•ˆ ํ•˜๋‹ค๋ณด๋‹ˆ ๊นŒ๋จน์—ˆ๋‹ค ใ…‹ใ…‹

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” nextInt()๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๊ณ  ๊ทธ ๋‹ค์Œ ํ•œ ์ค„์€ nextLine() ํ•˜๋‚˜๋ฅผ ์คŒ์œผ๋กœ์จ ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ์—†์•ค ๋’ค์—

 

๋‹ค์Œ nextLine()์„ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

 

๋Œ“๊ธ€