본문 바로가기
알고리즘, 자료구조/알고리즘

1018 체스판 다시 칠하기

by Wordbe 2019. 7. 18.
728x90

일일이 다 해보면 된다.

단순반복 노동은 한 번만 그 원리를 알면, 나머지는 정말 쉽다.

특히 반복할 때 컴퓨터는 절대 실수하지 않는다.

8x8의 크기의 filter로 체스판을 자르고 올바른 체스판으로 만들기 위해 뒤집어야할 횟수 중 최소가 되는 것을 고른다.

추가 테스트 케이스
9 9
WBWBWBWBB
BWBWBWBWB
WBWBWBWBW
BWBWBWBWB
WBWBWBWBW
BWBWBWBWB
WBWBWBWBW
BWBWBWBWB
WBWBWBWBW

#include <cstdio>

char a[52][52];

int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    for (int i=0; i<n; i++){
        char s[52];
        scanf("%s", s);
        for (int j=0; j<m; j++){
            a[i][j] = s[j];
        }
    }

    for (int i=0; i<n; i++){
        for (int j=0; j<m; j++){
            printf("%c ", a[i][j]);
        }
        printf("\n");
    }

    int ans = 987654321;
    for (int i=0; i<n-7; i++){
        for (int j=0; j<m-7; j++){
            printf("%d %d\n", i, j);
            char first_char = a[i][j];
            int first_value = (i + j) % 2;
            printf("%c %d\n", first_char, first_value);
            int cnt = 0;

            for (int k=i; k<i+8; k++){
                for (int p=j; p<j+8; p++){
                    printf("%c ", a[k][p]);
                }
                printf("\n");
            }

            for (int k=i; k<i+8; k++){
                for (int p=j; p<j+8; p++){
                    if ((k+p) % 2 == first_value){
                        if (a[k][p] != first_char) { cnt++; printf("%d %d, %c %c\n", k, p, first_char, a[k][p]); }
                    }
                    else if (a[k][p] == first_char) { cnt++; printf("%d %d, %c %c\n", k, p, first_char == 'B' ? 'W' : 'B', a[k][p]); }
                }
            }

            if (cnt < ans) { 
                ans = cnt;
                printf("answer(%d)\n", ans); 
            }
            if (ans == 0) break;
        }
        if (ans == 0) break;
    }
    printf("%d\n", ans);
    return 0;
}

왜 안되는지 디버깅을 위해 발악...

728x90

'알고리즘, 자료구조 > 알고리즘' 카테고리의 다른 글

1541 잃어버린 괄호  (0) 2019.07.25
1107 리모컨  (0) 2019.07.21
[brute-force] 1436 영화감독 숌  (0) 2019.07.16
[brute-force] 2798 블랙잭  (0) 2019.07.15
17298 오큰수  (4) 2019.07.14

댓글