프로그래머스/Level_3

[Level_3] 네트워크 (C++)

배발자 2022. 1. 18.
반응형

 

위의 그림은 [[1,1,0],[1,1,0],[0,0,1]] 를 도형화 시켜놓은것이다. 

즉, 이차원 벡터값을 받아와서 현재 노드를 가리키는 인덱스에서 다른 노드를 가리키는 인덱스의 배열값이 1인곳을 방문 처리를 해주면서 dfs 를 돌리면 된다.  

#include <string>
#include <vector>

using namespace std;
bool check[200]; 
int n1; 
void dfs (vector<vector<int>> &v, int node_idx){
    for(int i=0; i<n1; i++){
        if(v[node_idx][i]==1&&check[i]==0){
            check[i]=1; 
            dfs(v,i); 
        }
    }    
}


int solution(int n, vector<vector<int>> computers) {
    int answer = 0;
    n1=n; 
    for(int i=0; i<n; i++){
        if(check[i]==0){
            answer++; 
            dfs(computers,i);             
        }
    }
    return answer;
}
 

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

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

programmers.co.kr

 

반응형

댓글