(プログラマ)ネットワーク(Java、Java)
https://programmers.co.kr/learn/courses/30/lessons/43162
ネットワークとは、コンピュータ間で情報を交換する接続形式を指す.例えば、コンピュータAがコンピュータBに直接接続され、コンピュータBがコンピュータCに直接接続されている場合、コンピュータAとコンピュータCは間接的に接続されて情報を交換することもできる.そのため、コンピュータA、B、Cは同じネットワーク上に存在する.
指定されたコンピュータの個数nが、接続情報を含む2次元配列コンピュータをパラメータとする場合、ネットワークの個数を返すために解関数を記述します.
コンピュータの数nは、1つまたは複数の200以下の自然数である. 各コンピュータは、0からn−1までの整数として表される. コンピュータ番号が iの場合、コンピュータ[i][j]は1として表される. コンピュータ[i][i]は常に1である.
ncomputersreturn3{{1, 1, 0}, {1, 1, 0}, {0, 0, 1}}23{{1, 1, 0}, {1, 1, 1}, {0, 1, 1}}1
例1
次の2つのネットワークがあります.
例2
次のようにネットワークがあります.
問題の説明
ネットワークとは、コンピュータ間で情報を交換する接続形式を指す.例えば、コンピュータAがコンピュータBに直接接続され、コンピュータBがコンピュータCに直接接続されている場合、コンピュータAとコンピュータCは間接的に接続されて情報を交換することもできる.そのため、コンピュータA、B、Cは同じネットワーク上に存在する.
指定されたコンピュータの個数nが、接続情報を含む2次元配列コンピュータをパラメータとする場合、ネットワークの個数を返すために解関数を記述します.
せいげんじょうけん
I/O例
ncomputersreturn3{{1, 1, 0}, {1, 1, 0}, {0, 0, 1}}23{{1, 1, 0}, {1, 1, 1}, {0, 1, 1}}1
I/O例説明
例1
次の2つのネットワークがあります.
例2
次のようにネットワークがあります.
コード#コード#
class Solution {
public static boolean[] dfs(int[][] computers, int index, boolean[] visited) {
visited[index] = true;
for(int i = 0; i < computers[index].length; i++) {
if (i != index && !visited[i] && computers[index][i] == 1) {
visited = dfs(computers, i, visited);
}
}
return visited;
}
public static int solution(int n, int[][] computers) {
int answer = 0;
boolean[] visited = new boolean[n]; // 초기값은 모두 false로 자동 초기화.
for (int i = 0; i < n; i++) {
if (!visited[i]) {
answer++;
dfs(computers, i, visited);
}
}
return answer;
}
}
Reference
この問題について((プログラマ)ネットワーク(Java、Java)), 我々は、より多くの情報をここで見つけました https://velog.io/@archymi/프로그래머스-네트워크-Java-자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol