01-31 00:40
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
관리 메뉴

기록을 합시다.

[프로그래머스] 네트워크(python/java) 본문

공부/알고리즘

[프로그래머스] 네트워크(python/java)

울집고양이세마리 2023. 6. 22. 16:49

문제 요약

 

파이썬으로 제출한 정답

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

 

 

Comments