728x90
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/43162/solution_groups?language=cpp
2. 풀이
DFS를 이용하여 n개 만큼 순회를 한다.
만약 1)방문하지 않고, 2)0이 아닌(길이있는) 경우 그 지점에서 순회를 시작한다.
순회가 끝나고 answer+1 해주면 끝!
3. 풀이
#include <string>
#include <vector>
using namespace std;
int visit[201]={0};
void dfs(int start, int n , vector<vector<int>> &computers){
visit[start]= 1;
for(int i=0; i<n; i++){
if(visit[i]==0 && computers[start][i]!=0){
dfs(i, n, computers);
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
for(int i=0; i<n; i++){
if(visit[i]==0){
dfs(i, n, computers);
answer++;
}
}
return answer;
}
728x90
'코딩 테스트' 카테고리의 다른 글
[프로그래머스] 베스트앨범 (Python) (0) | 2021.09.06 |
---|---|
[프로그래머스] 섬 연결하기 (C++) (0) | 2021.09.06 |
[백준] 외판원 순회 (C++) (0) | 2021.05.29 |
[Codility] Lesson14. MinMaxDivision (Python) (1) | 2021.05.26 |
[Codility] Lesson12. Chocolatesbynumber (python) (0) | 2021.05.24 |
댓글