[백준 1018번] 브루트포스 알고리즘 - 체스판 다시 칠하기

김민지·2023년 10월 29일
0

냅다 시작 백준

목록 보기
101/118

✨ 문제 ✨


✨ 정답 ✨

const { notDeepEqual } = require("assert");
const { count } = require("console");
const fs = require("fs");
const { nextTick } = require("process");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim().split('\n');


// const fs = require('fs'); 
// let input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');

let [M,N] = input.shift().split(' ').map((el)=>+el);


let chessArray=[];
for (let i=0;i<M;i++){
  chessArray[i]=input.shift().split('');
}

const white=[
  ['W', 'B', 'W','B','W','B','W','B'],
  ['B', 'W','B','W','B','W','B', 'W'],
  ['W', 'B', 'W','B','W','B','W','B'],
  ['B', 'W','B','W','B','W','B', 'W'],
  ['W', 'B', 'W','B','W','B','W','B'],
  ['B', 'W','B','W','B','W','B', 'W'],
  ['W', 'B', 'W','B','W','B','W','B'],
  ['B', 'W','B','W','B','W','B', 'W'],
];
const black=[
  ['B', 'W','B','W','B','W','B', 'W'],
  ['W', 'B', 'W','B','W','B','W','B'],
  ['B', 'W','B','W','B','W','B', 'W'],
  ['W', 'B', 'W','B','W','B','W','B'],
  ['B', 'W','B','W','B','W','B', 'W'],
  ['W', 'B', 'W','B','W','B','W','B'],
  ['B', 'W','B','W','B','W','B', 'W'],
  ['W', 'B', 'W','B','W','B','W','B'],
];


let minArray=[]

const check=(x, y)=>{
  let checkW=0;
  let checkB=0;
  for (let i=x;i<x+8;i++){
    for (let j=y;j<y+8;j++){
      if (chessArray[i][j]!==white[i-x][j-y]){
        checkW+=1;
      }
      if (chessArray[i][j]!==black[i-x][j-y]){
        checkB+=1;
      }
    }
  }
  let min=checkW>checkB?checkB:checkW;
  return min
}
// 위에서부터 한 줄씩 찬찬히 내려보기
for (let i=0;i<=M-8;i++){
  for (let j=0;j<=N-8;j++){
    minArray.push(check(i,j));
  }
}


console.log(Math.min(...minArray))

🧵 참고한 정답지 🧵

💡💡 기억해야 할 점 💡💡

profile
이건 대체 어떻게 만든 거지?

0개의 댓글