[프로그래머스] 네트워크 (Java)

SeongWon Oh·2021년 9월 2일
0
post-thumbnail

🔗 문제 링크

https://programmers.co.kr/learn/courses/30/lessons/43162


👨🏻‍💻 내가 작성한 코드

class Solution { 
    public int solution(int n, int[][] computers) {
        int answer=0;
        boolean[] visited = new boolean[n];
        for (int i=0;i<n;i++){
            answer += dfs(i,computers, visited);
        }
        return answer; 
    } 
    
    
    public static int dfs(int node, int[][] computers, boolean[] visited){
        if (visited[node])
            return 0;
        
        visited[node] = true;
        for (int i=0; i<computers.length; i++){
            if (computers[node][i] == 1){
                dfs(i, computers, visited); 
            }
        }
        
        return 1;
    }

}

📝 결론

  • 이번 문제는 머리속으로 logic은 생각하였으나 실제 구현으로 옮기지 못하여 다른 사람의 코드를 참조하였다.. 아직 DFS 및 코드 구현에 많은 부족함을 느꼈다. 하지만 문제를 풀어보며 DFS의 활용법을 다시 한번 익히게 되었으며 다음 문제를 풀 때는 적용을 잘 할 수 있을거같다는 자신감이 생겼다.
  • 문제를 처음 풀려고 할때 어떤 node를 방문했는지를 확인할 변수인 visited를 boolean array가 아닌 List로 구현하여 추가를 하려고 했다. 하지만 이 문제의 경우는 Node의 수가 정해져서 array를 사용하는 것이 더 효율적인 것을 깨달았다.

    배열의 길이가 정해졌을 때는 List보다는 array를 사용할 것!

profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글