[プログラマ]ネットワーク(Java)


🔗 質問リンク


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;
    }

}

📝 n/a.結論

  • という問題は頭の中で論理を考えていたが、実行に移すことができず、他人のコードを参照した.DFSやコード実装にはまだ多くの不足がある.しかし問題を解くことによってDFSの使い方が再習得され,次の問題を解決する際にうまく応用できる自信が生まれた.
  • 1回目の解答
  • では,どのノードにアクセスしたかを確認するためにBoolean ArrayではなくListとして実装して追加する.しかしこの問題の場合はNodeの数が固定されているのでarrayの方が有効であることに気づきました.
    配列の長さが決定された場合、リストではなくarrayを使用するべきです!