출처 : 코딩테스트 연습 - 네트워크 | 프로그래머스 (programmers.co.kr)
풀이 방법
bfs/dfs를 반복 하면 네트워크의 개수를 알 수 있다.
for 문을 돌면서 방문하지 않은 네트워크를 발견 했을때 bfs/dfs를 수행하면 된다
#include <string>
#include <vector>
#include <queue>
#include <memory.h>
using namespace std;
int visited[201];
void bfs(int k, int n, vector<vector<int>> computers) {
queue<int> q;
q.push(k);
while(!q.empty()) {
int k = q.front();
q.pop();
for (int i = 0;i < n;i++) {
if (visited[i] == -1 && computers[i][k] == 1) {
visited[i] = 1;
q.push(i);
}
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
memset(visited, -1, sizeof(visited));
for (int i = 0;i < n;i++) {
if (visited[i] == -1) {
answer++;
bfs(i, n, computers);
}
}
return answer;
}
'Algorithm' 카테고리의 다른 글
[백준] 빙산 2573번 (c++) (0) | 2022.07.04 |
---|---|
[백준] 숨바꼭질 3 (c++) (0) | 2022.06.16 |
[백준] 이모티콘 14226번 (c++) (0) | 2022.03.29 |
[백준] 가장 가까운 공통 조상 3584번 (c++) (0) | 2022.03.28 |
[백준] 파이프 옮기기 1 17070번 (c++) (0) | 2022.03.24 |