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