๐Ÿ“š ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/๋ฐฑ์ค€ & ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][JAVA]Level 0 : ์•ˆ์ „์ง€๋Œ€

deep_lee 2022. 12. 24. 18:09

 


๋ฌธ์ œ ์ž์ฒด๋Š” ์‰ฌ์›Œ๋ณด์ด์ง€๋งŒ, ๊ตฌํ˜„ ํ•  ๋•Œ ๊ฒน์น˜๋Š”๋ถ€๋ถ„๊ณผ, ์ œ์ผ ๋ฐ”๊นฅ์ชฝ ์˜์—ญ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€๊ฐ€ ๊ด€๊ฑด์ด์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  2๊ฐ€์ง€๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์ดํ–ˆ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ ํ’€์ด ๋ฐฉ๋ฒ•.

 

class Solution {
     private static void destroyArea(int i, int j, int n, int[][] copy){
        for(int x=i-1; x<=i+1; x++){
            if(x<0||x>=n) continue;
            else{
                for(int y=j-1; y<=j+1; y++){
                    if(y<0||y>=n) continue;
                    else copy[x][y]=1;
                }
            }
        }
    }
    public int solution(int[][] board) {
        int n=board.length;
        int[][] area=new int[n][n];

        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                if(board[i][j]==1){
                    destroyArea(i,j,n,area);
                }
            }
        }
        int answer=0;
        for(int i=0; i<area.length; i++){
            for(int j=0; j<area.length; j++){
                if(area[i][j]==0)
                    answer++;
            }
        }
        return answer;
    }
}

 

 

๋‘๋ฒˆ์งธ ํ’€์ด ๋ฐฉ๋ฒ•. 

์ด๊ฒƒ์ด ์ฒ˜์Œ์— ๋‚ด๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ํ’€์ด์˜€๋‹ค.

์ž…๋ ฅ๋ฐ›๋Š” board์˜ ํฌ๊ธฐ๋Š” 5x5ํฌ๊ธฐ๋กœ ์ •ํ•ด์ ธ์žˆ๊ธฐ๋•Œ๋ฌธ์—, ์ƒ ํ•˜ ์ขŒ ์šฐ์— ํ•œ์ค„์”ฉ ๋„“ํžŒ 7x7์˜ ๋ฐฐ์—ด์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ 

ํŒŒ๊ดด๋˜๋Š” ๋ถ€๋ถ„์„ ๋ชจ๋‘ ๋ฐ”๊ฟ”์ฃผ๊ณ  5x5์˜ ํฌ๊ธฐ ๋‚ด์—์„œ ์•ˆ์ „์ง€๋Œ€๋ฅผ ์นด์šดํŒ…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

  int n=board.length;
        int[][] area=new int[n+2][n+2];

        for(int i=1; i<n+1; i++){
            for(int j=1; j<n+1; j++){
                area[i][j]=board[i-1][j-1];
            }
        }

        for(int i=1; i<n+1; i++){
            for(int j=1; j<n+1; j++){
                if(area[i][j]==1){
                    for(int x=i-1; x<=i+1; x++){
                        for(int y=j-1; y<=j+1; y++){
                            if(area[x][y]!=1) area[x][y]=2;
                        }
                    }
                }
            }
        }
        int answer=0;
        for(int i=1; i<n+1; i++){
            for(int j=1; j<n+1; j++){
                if(area[i][j]==0) answer++;
                System.out.print(area[i][j]);
            }
            System.out.println();
        }
        return answer;
    }
}