2023년 04월 07일 금요일 - 히히 오늘 생일입니다!


오늘 올려볼 문제는 1020번 Number of Enclaves 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

순간 어제 문제랑 뭐가 다른지 몰랐다...


입력


사진에서도 볼 수 있듯이 2차원 int 배열 1개가 입력으로 들어온다.



풀이 및 코드


1로 이루어진 섬들의 크기를 구하는데 섬이 0으로만 둘러싸여져 있는 섬이어야한다.


오늘은 처음부터 정답을 생각해냈다.

bfs로 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public int numEnclaves(int[][] grid) {
        int result = 0, c = grid.length, r = grid[0].length;
        var dirs = new int[][] {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
        var visit = new boolean[c][r];
        
        for(int i = 0; i < c; i++) {
            for(int j = 0; j < r; j++) {
                if(visit[i][j] || grid[i][j] == 0) continue;
                var flag = true;
                int count = 0;
                var q = new LinkedList<int[]>();
                q.add(new int[]{i, j});
                while(!q.isEmpty()) {
                    var now = q.poll();
                    if(now[0] < 0 || now[0] >= c || now[1] < 0 || now[1] >= r) continue;
                    if(visit[now[0]][now[1]] || grid[now[0]][now[1]] == 0) continue;
                    if(now[0] == 0 || now[0] == c - 1 || now[1] == 0 || now[1] == r - 1) flag = false;
                    
                    visit[now[0]][now[1]] = true;
                    count++;
                    
                    for(var d : dirs) q.add(new int[]{now[0] + d[0], now[1] + d[1]});
                }
                
                if(flag) result += count;
            }
        }
        
        return result;
    }
}




제출 화면

leetcode 문제 맞았습니다


오늘 생일!

기분 좋아!


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts