#include <string>
#include <vector>
#include <queue>
using namespace std;
int visited[200];
void DFS(int curr, 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] == false)
{
DFS(i, n, computers);
answer++;
}
}
return answer;
}
void DFS(int curr, int n, vector<vector<int>> computers)
{
queue<int> q;
q.push(curr);
visited[curr] = true;
while(!q.empty())
{
int currNode = q.front();
q.pop();
for(int i = 0; i < computers[currNode].size();i++)
{
int nextNode = i;
if(visited[nextNode] == false && computers[currNode][nextNode] == 1)
{
visited[nextNode] = true;
q.push(nextNode);
}
}
}
}
풀이
- 기본적으로 DFS를 사용한다.
- a->b로 가는 것이 1일때 네트워크가 활성화 되는 것임
- 한 네트워크가 다 구성됐다면 다른 네트워크가 있는 곳이 있을 수도 있기 때문에
0~n까지 안 간 곳이 있나 확인한다. - 확인 할 때마다 카운트를 하나씩 올린다.
'Algorithm > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 소수찾기 완전탐색 (0) | 2021.04.23 |
---|---|
[C++] 프로그래머스 모의고사 완전탐색 (0) | 2021.04.21 |
[C++] 프로그래머스 타겟넘버 DFS/BFS (0) | 2021.04.02 |
[C++] 프로그래머스 H-index (0) | 2021.01.04 |
[C++] 프로그래머스 가장 큰 수 (0) | 2020.12.30 |