BaekJoon

1018번 체스판 다시 칠하기

GamJia 2023. 4. 3. 09:04

단계별로 풀어보기 - 브루트 포스 - 4단계

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

#include <iostream>
using namespace std;

string board[50];
string whiteBoard[8]={
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW"
};
string blackBoard[8]={    
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB"
};

int whiteCheck(int x,int y)
{
    int count=0;
    for(int i=0;i<8;i++)
    {
        for(int j=0;j<8;j++)
        {
            if(board[i+x][j+y]!=whiteBoard[i][j])
            {
                count++;
            }
        }
    }
    return count;
}

int blackCheck(int x,int y)
{
    int count=0;
    for(int i=0;i<8;i++)
    {
        for(int j=0;j<8;j++)
        {
            if(board[i+x][j+y]!=blackBoard[i][j])
            {
                count++;
            }
        }
    }
    return count;
}


int main()
{
    int N,M,temp,result=64;
    cin>>N>>M;
    for(int i=0;i<N;i++)
    {
        cin>>board[i];
    }
    
    for(int i=0;i<N-7;i++)
    {
        for(int j=0;j<M-7;j++)
        {
            temp=min(whiteCheck(i,j),blackCheck(i,j));
            if(result>temp)
            {
                result=temp;
            }
        }
    }
    cout<<result<<endl;
    return 0;
}