Algorithm/문제 풀이 / / 2020. 8. 31. 06:55

[Programmers - JAVA] 네트워크

반응형

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

 

코딩테스트 연습 - 네트워크

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있��

programmers.co.kr

 

 

문제

 

 

풀이

  • 연결된 네트워크의 연결된 개수를 찾는 문제

 

 

과정

  1.  연결된 경우를 확인하기 위한 boolean형 visited 생성.
  2.  dfs 실행전 네트워크의 수 증가.
  3.  모든 노드에 대해 dfs 실행. (단, 방문했던 경우는 제외. 연결된 곳 포함)
  4.  노드 방문 표시.
  5.  해당 노드에서 다른 노드로 연결된게 있는지 전체 탐색. 있는 경우 dfs 호출.

 

 

알고리즘 지식

  • DFS(깊이 우선 탐색)

 

 

제출 JAVA 코드

class Solution {
		public int solution(int n, int[][] computers) {
			int answer = 0;
			boolean[] visited = new boolean[n];

			for (int i = 0; i < n; i++) {
				if (visited[i] == false) {
					answer++;
					dfs(i, visited, computers);
				}
			}

			return answer;
		}

		public void dfs(int node, boolean[] visited, int[][] computers) {
			visited[node] = true;

			for (int i = 0; i < computers.length; i++) {
				if (visited[i] == false && computers[node][i] == 1) {
					dfs(i, visited, computers);
				}
			}
		}
	}

 

 

 

Eclipse 컴파일용 JAVA

package DFS_BFS;

public class 네트워크 {

	public static void main(String[] args) {
		int[][] computers = { { 1, 1, 0 }, { 1, 1, 0 }, { 0, 0, 1 } };
		int n = 3;
		System.out.println(new Solution().solution(n, computers));
	}

	public static class Solution {
		public int solution(int n, int[][] computers) {
			int answer = 0;
			boolean[] visited = new boolean[n];

			for (int i = 0; i < n; i++) {
				if (visited[i] == false) {
					answer++;
					dfs(i, visited, computers);
				}
			}

			return answer;
		}

		public void dfs(int node, boolean[] visited, int[][] computers) {
			visited[node] = true;

			for (int i = 0; i < computers.length; i++) {
				if (visited[i] == false && computers[node][i] == 1) {
					dfs(i, visited, computers);
				}
			}
		}
	}

}
반응형

'Algorithm > 문제 풀이' 카테고리의 다른 글

[BAEKJOON_14719 - JAVA] 빗물  (0) 2020.09.13
[BAEKJOON_2206 - JAVA] 벽 부수고 이동하기  (0) 2020.09.05
[Programmers - JAVA] 타겟 넘버  (0) 2020.08.31
[BAEKJOON_2493 - JAVA] 탑  (0) 2020.07.02
[BAEKJOON_3109 - JAVA] 빵집  (0) 2020.06.27
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유