최대 1 분 소요

part34. 혼자서 하는 틱택토

js ver 1.0

function solution(board) {
    const getCheckSheet = (len) => {
        const [horizon, vertical, majorDiag, antiDiag] = [[], [], [], []];

        for (let i = 0; i < len; i++) {
            horizon.push(Array.from({length: len}, (_, idx) => i * len + idx))
            vertical.push(Array.from({length: len}, (_, idx) => i + len * idx))
            majorDiag.push(i * (len + 1));
            antiDiag.push((i + 1) * (len - 1));
        }

        return [...horizon, ...vertical, majorDiag, antiDiag];
    }

    const winOrNot = (arr) => {
        return checkSheet.some(answer => answer.every(el => arr.includes(el)));
    }

    const checkSheet = getCheckSheet(board.length);

    const myBoard = board.flatMap(el => el.split(''));

    const {O, X} = myBoard.reduce((obj, el, idx) => {
        obj[el]?.push(idx);
        return obj;
    }, {O: [], X: []});

    const diff = O.length - X.length;

    if(diff == 0){
        return winOrNot(O) ? 0 : 1;
    }else if (diff == 1){
        return winOrNot(X) ? 0 : 1;
    }else{
        return 0;
    }
}

실행결과_js ver 1.0


업데이트: