문제 번호 : 1018
문제 바로가기 ☞ https://www.acmicpc.net/problem/1018
<<< 문제 내용 >>>
const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const first_inputs = input[0].split(' ');
const chess = [];
for(let i=0; i<first_inputs[0]; i++){
chess.push(input[i+1]);
}
const white = ['WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW'];
const black = ['BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB'];
const answer = [];
for(let i=0; i<=first_inputs[0]-8; i++){
for(let j=0; j<=first_inputs[1]-8; j++){
let whitecnt = 0;
let blackcnt = 0;
for(let k=i; k<i+8; k++){
for(let l=j; l<j+8; l=l+1){
if(chess[k][l] !== white[k-i][l-j]) whitecnt++;
if(chess[k][l] !== black[k-i][l-j]) blackcnt++;
}
}
let min = whitecnt < blackcnt ? whitecnt : blackcnt;
answer.push(min);
}
}
console.log(Math.min(...answer));
* 처음 문제 이해를 잘못해서 N*M의 체스판 전체로 비교하는 것이라 생각했지만, 8*8의 체스판을 입력값이랑 비교하는 것이었다.
* 8*8 흰색, 검은색 체스판을 전체 배열이랑 비교하면서 둘 중 작은 값을 answer 배열에 담아둔 후, 마지막에 그 중 최솟값을 출력하면 끝
도움이 되셨다면 공감 부탁드립니다.