새소식

Baekjoon

[BaekJoon] 1018 번 체스판 다시 칠하기 문제 - (nodejs)

  • -
728x90
문제 번호 :  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 배열에 담아둔 후, 마지막에 그 중 최솟값을 출력하면 끝

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.