@StudY/.algorithm

[Day4] 529. Minesweeper

킬로그램y 2019. 2. 18. 11:30

529Minesweeper


class Solution {

    public char[][] updateBoard(char[][] board, int[] click) {

        int ci = click[0];

        int cj = click[1];

        

        if (board[ci][cj]=='M') {

            board[ci][cj]='X';

            return board;

        } else {

            int[] i = {-1,-1,-1, 0,0, 1,1,1};

            int[] j = {-1, 0, 1,-1,1,-1,0,1};

            int adjacents = 0;

            

            for (int k=0; k<8; k++) {

                if (ci+i[k]<0 || ci+i[k]>=board.length) continue;

                if (cj+j[k]<0 || cj+j[k]>=board[0].length) continue;

                if (board[ci+i[k]][cj+j[k]]=='M') {

                    adjacents++;    

                } 

            }


            if (adjacents==0) {

                board[ci][cj]='B';

                for (int k=0; k<8; k++) {

                    if (ci+i[k]<0 || ci+i[k]>=board.length) continue;

                    if (cj+j[k]<0 || cj+j[k]>=board[0].length) continue;

                    if (board[ci+i[k]][cj+j[k]] == 'E') updateBoard(board, new int[] {ci+i[k], cj+j[k]});

                }       

                return board;

            } else {

                board[ci][cj]=(char)(adjacents+'0');

            }

        }

        return board;

    }

}



Accepted3 ms39.1 MBjava