728x90
이번 문제는 DFS로 쉽게 풀 수 있는 문제이다.
visited[][] 배열에 방문 여부를 기록하고, 탐색하면서 방문하지 않은 다른 네트워크를 탐색한다.
DFS를 실행한 횟수가 네트워크의 수가 되므로, DFS 실행할 때마다 answer 값을 증가시켜준다.
#include <string>
#include <vector>
using namespace std;
int visited[201]={0,};
void dfs(int x, int n, vector<vector<int>> computers);
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
for (int i = 0;i<n;i++) {
if (visited[i] == 0) {
dfs(i, n, computers);
answer++;
}
}
return answer;
}
void dfs(int x, int n, vector<vector<int>> computers) {
visited[x] = 1;
for (int i=0;i<n;i++) {
if (visited[i]== 0 && computers[x][i] == 1) {
dfs(i, n, computers);
}
}
}
728x90
'PS > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 : 개인정보 수집 유효기간(feat.문자열 처리) (0) | 2024.11.22 |
---|---|
[C++] 프로그래머스 : 숫자의 표현 (0) | 2024.03.08 |