https://school.programmers.co.kr/learn/courses/30/lessons/43162
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;
}
'Algorithm > dfs' 카테고리의 다른 글
프로그래머스 미로탈출명령어 c++ // dfs 가지치기 방법, dfs중복방문 방법, dfs 시간복잡도 계산방법 (0) | 2023.12.02 |
---|---|
백준 1759 암호만들기 c++ // 포함불포함 완탐 dfs, 순열시간초과 나는경우 해결 (0) | 2023.11.26 |
프로그래머스 단어변환 c++ dfs ,백트래킹 // dfs 조건있는경우 해결방법 (0) | 2023.10.18 |
프로그래머스 전력망을 둘로 나누기 c++ // int dfs 자식수세기 (0) | 2023.10.02 |
프로그래머스 타겟넘버 c++ // dfs (0) | 2023.09.13 |