Jin's Library

[Silver Ⅱ] 4963 - 섬의 개수 본문

Algorithm - Java/BOJ - Silver

[Silver Ⅱ] 4963 - 섬의 개수

Linkin 2025. 9. 30. 00:15
package BOJ.Silver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
// 실버 2 섬의 개수
// DFS
public class BOJ_4963 {

    static int N,M;
    static int[][] map;
    
    static boolean DFS(int x, int y){
        if(x<0 || y<0 || x>=N || y>=M) return false;
        else{
            if(map[x][y] == 1){
                map[x][y] = 0;
                DFS(x+1,y);
                DFS(x-1,y);
                DFS(x,y+1);
                DFS(x,y-1);
                DFS(x-1,y-1);
                DFS(x-1,y+1);
                DFS(x+1,y-1);
                DFS(x+1,y+1);
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        boolean flag = true;
        StringTokenizer st;

        while(flag){
            st = new StringTokenizer(br.readLine());
            M = Integer.parseInt(st.nextToken());    
            N = Integer.parseInt(st.nextToken());    
            if(M == 0 && N == 0) break;
            map = new int[N][M];
            int cnt = 0;

            for(int i=0;i<N;i++){
                st = new StringTokenizer(br.readLine());
                for(int j=0;j<M;j++){
                    map[i][j] = Integer.parseInt(st.nextToken());
                }
            }

            for(int i=0;i<N;i++){
                for(int j=0;j<M;j++){
                    if(DFS(i,j)) cnt++;
                }
            }
            sb.append(cnt).append("\n");
            System.out.println(Arrays.deepToString(map));
        }
        System.out.println(sb);
    }
}

// 정방향 + 대각선도 섬으로 친다...

'Algorithm - Java > BOJ - Silver' 카테고리의 다른 글

[Silver Ⅴ] 7785 - 회사에 있는 사람  (0) 2025.09.30
[Silver Ⅳ] 9012 - 괄호  (0) 2025.09.30
[Silver Ⅱ] 5397 - 키로거  (0) 2025.09.30
[Silver Ⅳ] 10828 - 스택  (0) 2025.09.30
[Silver Ⅳ] 10866 - 덱  (0) 2025.09.30