공부기록/백준

[백준] 4963번 섬의 개수

메델 2023. 9. 24. 20:46
import java.util.Scanner;

public class Main {
    static int w, h;  
    static int[][] a;
    static boolean[][] visit;
    static int[][] dir = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
    static int count;

    static void DFS(int x, int y) {
        visit[x][y] = true;

        for (int i = 0; i < 8; i++) {
            int nx = x + dir[i][0];
            int ny = y + dir[i][1];

            if (nx < 0 || ny < 0 || nx >= h || ny >= w) continue; 
            if (visit[nx][ny]) continue;
            if (a[nx][ny] == 0) continue;

            DFS(nx, ny);
        }
    }

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);

        while (true) {
            w = kb.nextInt();  
            h = kb.nextInt();  
            if (w == 0 && h == 0) break;
            
            a = new int[h][w];  

            for (int i = 0; i < h; i++) {  
                for (int j = 0; j < w; j++) {  
                    a[i][j] = kb.nextInt();
                }
            }

            visit = new boolean[h][w];  
            count = 0;
            for (int i = 0; i < h; i++) {  
                for (int j = 0; j < w; j++) {  
                    if (!visit[i][j] && a[i][j] == 1) {
                        DFS(i, j);
                        count++;
                    }
                }
            }

            System.out.println(count);
        }
    }
}

-- 아 변수명 잘못 쓴거 모르고 30분 날렸다

'공부기록 > 백준' 카테고리의 다른 글

[백준] 2775번 부녀회장이 될테야  (1) 2023.09.27
[백준] 1110번 더하기 사이클  (0) 2023.09.27
[백준] 2667번 단지번호붙이기  (0) 2023.09.24
[백준] 1260번 DFS와 BFS  (0) 2023.09.23
[백준] 1076번 저항  (0) 2023.09.22