Java/알고리즘

[Java] 이것이 취업을 위한 코딩테스트다 DFS - 음료수 얼려먹기

TheWing 2020. 11. 12. 01:11
public class _3frozenDrinks {

    private static int n = 4;
    private static int m = 5;

    private static boolean[][] visited = new boolean[n][m];

    private final static int[][] edges = {
            {0, 0, 1, 1, 0},
            {0, 0, 0, 1, 1},
            {1, 1, 1, 1, 1},
            {0, 0, 0, 0, 0}
    };

    private static int cnt = 0;

    public static void main(String[] args) {

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (dfs(i,j)) {
                    cnt++;
                }
            }
        }
        System.out.println(cnt);
    }

    public static boolean dfs(int x, int y) {
        if (x < 0 || x >= n || y < 0 || y >= m ) return false;
        if (edges[x][y] == 0) {
            //노드 방문 처리
            edges[x][y] = 1;
            //상 하 좌 우 위치 모두 재귀적 호출
            dfs(x - 1, y);
            dfs(x, y - 1);
            dfs(x + 1, y);
            dfs(x, y + 1);
            return true;
        }

        return false;
    }

}

Reference

  • 해당 포스팅은 이것이 취업을 위한 코딩테스트다 책을 보고 풀이 해본 것입니다. 지적사항 있으시면 댓글 남겨주시면 감사하겠습니다.