18156

#include <stdio.h>
#include <stdlib.h>

int is_correct(int num, char (*arr)[24], int is_col){
    for(int i = 0; i < num; i++){
        int b_num = 0, w_num = 0, count = 0;
        char pre = 0;
        for(int j = 0; j < num; j++){
            // 행 검사
            char cur = arr[i][j];
            // 열 검사
            if(is_col == 1)cur = arr[j][i];

            // 연속 3개 검사
            if(cur == pre){
                count ++;
            }
            else{
                count = 0;
            }
            // 연속 3개 시 return 0;
            if(count == 2){
                return 0;
            }

            // 검, 흰 카운트
            switch (cur)
            {
            case 'B':
                b_num ++;
                pre = 'B';
                break;
            
            case 'W':
                w_num ++;
                pre = 'A';
                break;
            }
        }

        // 검 희 개수가 다르면 return 0;
        if(b_num != w_num){
            return 0;
        }
    }

    // 모든 조건 만족 시 return 1;
    return 1;
}


int main(void){
    char arr[24][24] = {0};
    // n 입력
    int num = 0;
    scanf("%d", &num);
    getchar();

    // wb격자 입력
    for(int i = 0; i < num; i++){
        for(int j = 0; j < num; j++){
            scanf("%c", &arr[i][j]);
        }
        getchar();
        
    }

    // 행 검사 시 조건 만족 못 할경우 0출력 종료
    if(!is_correct(num, arr, 0)){
        printf("0");
        return 0;
    }

    // 열 검사 시  조건 만족 할 경우 1 출력
    if(is_correct(num, arr, 1)){
        printf("1");
    }
    // 열 검사 시 조건 만족 못 할 경우 0 출력
    else{
        printf("0");
    }

    return 0;
}

+ Recent posts