BOJ 1018

슬기로운 FE 세상·2022년 3월 19일
0

const input = require("fs").readFileSync("./input.txt").toString().trim().split("\n");

const num = input.shift().split(' '); // 첫 줄 제거 후 반환, 공백으로 구분

const N = Number(num.shift()) // 가로

const M = Number(num.shift()) // 세로

const answer = [];

const whiteBoard = [
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
];

const blackBoard = [
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
    "BWBWBWBW",
    "WBWBWBWB",
];

function checkWhite(x, y) {
    let count = 0;
    for(let i=y; i<y+8; i++) {
        for(let j=x;j<x+8;j++) {
            if(input[i][j] !== whiteBoard[i-y][j-x]) {
                count++;
            }
        }
    }
    return count;
}

function checkBlack(x, y) {
    let count = 0;
    for(let i=y;i<y+8;i++) {
        for(let j=x;j<x+8;j++) {
            if(input[i][j] !== blackBoard[i-y][j-x]) {
                count++;
            }
        }
    }
    return count
}

for(let i=0;i+7<N;i++) {
    for(let j=0; j+7<M;j++) {
        answer.push(checkBlack(j,i))
        answer.push(checkWhite(j,i))
    }
}

console.log(Math.min(...answer));

blackBoard, whiteBoard의 8x8을 만들어놓고, input 격자판에 한칸 씩 이동해가면서 비교하여 틀린 숫자만큼 count해서 출력.. 구현은 까다로워

profile
자 드가자~~

0개의 댓글

관련 채용 정보