관리 메뉴

Mini

프로그래머스 네트워크 c++ // 인접행렬 dfs 본문

Algorithm/dfs

프로그래머스 네트워크 c++ // 인접행렬 dfs

Mini_96 2023. 9. 13. 16:42

https://school.programmers.co.kr/learn/courses/30/lessons/43162

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 의사코드

for(nodes)
	if(visit) continue;
    dfs(node)
    answer++
DFS:
	방문처리
    for(연결된노드들)
    	if(방문) continue
        if(연결되었음) dfs(there)

 

2. 전체코드

#include <bits/stdc++.h>

using namespace std;

int answer;
int v[204];
int N;

//해당 노드(컴퓨터)dfs
void dfs(int& n, vector<vector<int>>& computers){
    v[n]=1;
    
    
    for(int i=0;i<N;++i){
        if(v[i]) continue;
        if(computers[n][i]==1){
            dfs(i,computers);
        }
    }
    return;
    
}

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