본문 바로가기

PS

[BOJ] 2667번: 단지번호붙이기(DFS)

 

https://www.acmicpc.net/problem/2667

 

2667번: 단지번호붙이기

<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여

www.acmicpc.net

 

 

 

분류 : DFS, BFS

 

더보기
public class Main {
    static Myscanner sc = new Myscanner();
    static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
    static int N,home;
    static char[][] vileage;
    static int[][] visited;
    
    public static void main(String[] args) {

        N = sc.nextInt();
        vileage = new char[26][26];
        visited = new int[26][26];
        for (int idx = 0; idx < N; idx++) {
            vileage[idx] = sc.nextLine().toCharArray();
        }
        int[] house = new int[25 * 25 + 1];
        home = 0;
        for (int r = 0; r < N; r++) {
            for (int c = 0; c < N; c++) {
                if (vileage[r][c] == '1' && visited[r][c]==0) {
                    ++home;
                    DFS(r, c);
                }
            }
        }
        for(int r =0; r<N;r++)
        {
            for(int c =0; c<N;c++)
            {
                if(visited[r][c]!=0){
                    house[visited[r][c]]++;
                }
            }
        }
        out.println(home);
        Arrays.sort(house);
        for(int idx =0; idx<house.length;idx++){
            if(house[idx]!=0){
                out.println(house[idx]);
            }
        }
        out.close();
    }

    private static void DFS(int r, int c) {
        if (r < 0 || r >= N || c < 0 || c >= N || visited[r][c]!=0 || vileage[r][c] == '0')
            return;
        visited[r][c] = home;

        DFS(r + 1, c);
        DFS(r - 1, c);
        DFS(r, c + 1);
        DFS(r, c - 1);
    }
}

 

음.. DFS를 이용해서 인접한 집끼리 번호를 부여한다.

그러고 나서 House 배열을 sort 한 다음에 답을 도출해내면 완료!

'PS' 카테고리의 다른 글

[BOJ] 2583번: 영역 구하기  (0) 2017.06.08
[BOJ] 11049번: 행렬 곱셈 순서  (0) 2017.06.08
[BOJ] 1012번 : 유기농 배추(DFS)  (0) 2017.06.07
[BOJ] 1260번 : DFS와 BFS  (0) 2017.06.07
[BOJ]1697번 - 숨바꼭질  (0) 2017.06.06