기록을 합시다.
[프로그래머스] 네트워크(python/java) 본문
문제 요약
파이썬으로 제출한 정답
def solution(n, computers):
visited = [False]*(n+2)
tree = 0
for i in range(n):
if visited[i] == False:
DFS(n, i, visited, computers)
tree += 1
return tree
def DFS(n, start, visited, computers):
visited[start] = True
for i in range(n):
if (visited[i] == False) and (computers[start][i]==1):
DFS(n, i, visited, computers)
자바로 제출한 정답
import java.util.*;
class Solution {
public int solution(int n, int[][] computers) {
List<Boolean> visited = new ArrayList<>(); //False n+2개로 세팅
for(int k = 0; k < n+3; k++){
visited.add(false);
}
int answer = 0;
for(int i = 0; i < n; i++){
if(visited.get(i) == false){//방문 안 했을 때
DFS(n, i, computers, visited);
answer += 1;
}
}
return answer;
}
public void DFS(int n, int start, int[][] computers, List<Boolean> visited){
if(visited.get(start) == true){//이미 방문한 곳
return;
}
visited.set(start, true);
for(int j=0; j < n; j++){
if(visited.get(j) == false && computers[start][j] == 1)
{
DFS(n, j, computers, visited);
}
}
}
}
'공부 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 소수 찾기(python) (0) | 2023.06.26 |
---|---|
[프로그래머스] 의상(python/java) (0) | 2023.06.26 |
[프로그래머스] 기능개발(python/java) (0) | 2023.06.22 |
[프로그래머스] 전화번호 목록(python/java) (0) | 2023.06.22 |
[프로그래머스] 타겟 넘버(python/java) (0) | 2023.06.12 |
Comments