Dev.baelanche

[백준 1018] 체스판 다시 칠하기 본문

Data Structure & Algorithm/PS - JAVA

[백준 1018] 체스판 다시 칠하기

baelanche 2019. 4. 1. 20:34
반응형

 

주어진 n*m의 배열에서 8*8 범위를 한칸씩 움직이면서 모두 검사한다.

 

 

 

 

1. BWBW... 순으로 진행하는 체스판을 90도 회전시키면 WBWB... 가 되므로

   64 - 칠한 개수와 칠한 개수 중 작은 값을 최소값으로 사용한다.

 

public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int m = sc.nextInt();
        int n = sc.nextInt();
        char[][] chess = new char[m][n];
        int min = 64;
        
        for(int i=0; i<m; i++) {
            chess[i] = sc.next().toCharArray();
        }
        
        int a=0, b=0;
        while(true) {
            int cnt = 0;
            int idx = 0;
            for(int i=a; i<8+a; i++) {
                for(int j=b; j<8+b; j++) {
                    if(idx%2 == 0 && i%2 == 0 && chess[i][j] != 'B')
                        cnt++;
                    if(idx%2 == 1 && i%2 == 0 && chess[i][j] != 'W')
                        cnt++;
                    if(idx%2 == 0 && i%2 == 1 && chess[i][j] != 'W')
                        cnt++;
                    if(idx%2 == 1 && i%2 == 1 && chess[i][j] != 'B')
                        cnt++;
                    idx++;
                }
            }
            idx = 0;
            cnt = (64 - cnt) < cnt ? 64 - cnt : cnt;
            min = cnt < min ? cnt : min;
            b++;
            if(b == n-7) {
                b = 0;
                a++;
            }
            if(a == m-7) break;
        }
        System.out.println(min);
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 1024] 수열의 합  (0) 2019.04.01
[백준 1003] 피보나치 함수  (0) 2019.04.01
[백준 1463] 1로 만들기  (0) 2019.03.31
[백준 2503] 숫자 야구  (0) 2019.03.29
[백준 10448] 유레카 이론  (0) 2019.03.29
Comments