1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [S4_1018] ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static char[][] board;
    static int N,M;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine()," ");

        // **** input start ****
        // ํ–‰
        N = Integer.parseInt(st.nextToken());
        // ์—ด
        M = Integer.parseInt(st.nextToken());

        board = new char[N][M];

        // ์ขŒํ‘œ์ž…๋ ฅ
        for(int i=0; i<N; i++){
            String str = br.readLine();
            for(int j=0; j<M; j++){
                board[i][j] = str.charAt(j);
            }
        }

        // **** input end ****

        // ์ฒดํฌํ•  string
        String str1 = "BWBWBWBW";
        String str2 = "WBWBWBWB";
        int sum = 0;
        int min = Integer.MAX_VALUE;

        // ๋ชจ๋“  ์ขŒํ‘œ ํƒ์ƒ‰
        for(int i=0; i<N; i++){
            for(int j=0; j<M; j++){
                // ๊ฐ€์ง€์น˜๊ธฐ ๋งŒ์•ฝ 8*8 ๋ฐฐ์—ด์„ ๋งŒ๋“ค์ง€ ๋ชปํ•œ๋‹ค๋ฉด ( ๋ฒ”์œ„ ์ดˆ๊ณผ ) ํ†ต๊ณผ
                if(i+8>N || j+8>M){
                    continue;
                }

                sum = rectangle(j,i,str1,str2);
                // ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ
                min = Math.min(min, sum);

                sum = rectangle(j,i,str2,str1);
                // ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ
                min = Math.min(min, sum);
            }
        }

        System.out.println(min);

    } // main end

    // sum ๊ณ„์‚ฐ
    static int rectangle(int x, int y, String first, String second){
        int sum = 0;
        // ํ–‰ ๋ฒˆํ˜ธ
        int temp = 0;

        for(int i=y; i<y+8; i++){
            // string ์—ด ๋ฒˆํ˜ธ
            int temp2 = 0;
            for(int j=x; j<x+8; j++){
                // first check
                if(temp % 2 == 0){
                    // ๋งŒ์•ฝ ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๋ฉด ์นด์šดํŒ…
                    if(board[i][j] != first.charAt(temp2)) sum++;
                }
                // second check
                else{
                    // ๋งŒ์•ฝ ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๋ฉด ์นด์šดํŒ…
                    if(board[i][j] != second.charAt(temp2)) sum++;
                }
                // string ์—ด ํ”Œ๋Ÿฌ์Šค
                temp2++;
            }
            // ํ–‰ ํ”Œ๋Ÿฌ์Šค
            temp++;
        }
        return sum;
    }
} // class end

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์€๊ทผํžˆ ๊ฑธ๋ ธ๋‹ค ใ…‹ใ…‹ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์—†์—ˆ์–ด ใ… 
๊ทธ๋ž˜๋„ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ƒ๊ฐํ•œ ๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ์ขŒํ‘œ๋ฅผ ๋Œ๋ฉด์„œ ์ขŒํ‘œ๊ฐ’์„ โ€˜BWBWBWBWโ€™, โ€˜WBWBWBWBโ€™ ๋ฅผ ๋ฒˆ๊ฐˆ์•„ ํ™•์ธํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฌธ์ž ๊ฐœ์ˆ˜๋ฅผ ์ฒดํฌํ•ด ๊ทธ ์ˆ˜๊ฐ€ ์ตœ์†Œ์ธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋ชจ๋“  ์ขŒํ‘œ ๋Œ๋ฉด์„œ check ( 8 * 8 ์ž˜๋ผ์„œ )
    • 8 * 8 ๋ฒ”์œ„๊ฐ€ board ๋ฒ”์œ„๋ฅผ ๋„˜์œผ๋ฉด continue;
  • ๊ฐ™์€์ง€ ์ฒดํฌ , ๋‹ค๋ฅด๋ฉด sum++;
  • ์ขŒํ‘œ๋งˆ๋‹ค sum ์ดˆ๊ธฐํ™”
  • โ€˜BWBWBWBWโ€™, โ€˜WBWBWBWBโ€™ ์ˆœ์„œ ๋ฐ”๊ฟ”์„œ ์ด 2๋ฒˆ ์ง„ํ–‰



์ฒ˜์Œ์— ๊ตฌ์ƒ์€ ์›๋ž˜ ์ขŒํ‘œ๊ฐ’์ด โ€˜Wโ€™์ธ์ง€ โ€˜Bโ€™์ธ์ง€ ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์คฌ์—ˆ๋Š”๋ฐ ํ’€์–ด๋ณด๋‹ˆ ์‹œ์ž‘์ขŒํ‘œ์™€๋Š” ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด ๊ทธ๋ƒฅ ๋‘๋ฒˆ์˜ ๊ฒฝ์šฐ ๋‹ค ๊ตฌํ•ด์ฃผ๊ณ  ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด์ฃผ์—ˆ๋‹ค.
์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š” ๋ฒ”์œ„๋ผ ๋‹คํ–‰์ด์˜€๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: