알고리즘/DBS와BFS

[프로그래머스/C++] 네트워크 (BFS/DFS)

수디sudy 2022. 1. 18. 17:08

문제 : https://programmers.co.kr/learn/courses/30/lessons/43162#

 

코딩테스트 연습 - 네트워크

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있

programmers.co.kr

 

 

이 문제는 그냥 일반적인 DFS로 풀었더니 금방 풀렸당

BFS로도 풀 수 있을 것 같지만 나는 DFS로 풀었당 히히

 

#include <string>
#include <vector>

using namespace std;

bool visit[201];
void DFS(int idx, vector<vector<int>> computers, int n)
{
    for(int i=0; i<n; i++)
    {
        if (computers[idx][i] && !visit[i])
        {
            visit[i] = true;
            DFS(i, computers, n);
        }
    }
    
    
}
int solution(int n, vector<vector<int>> computers) {
    int answer = 0;
    
    for(int i=0; i<n; i++)
    {
        if(visit[i] == false)
        {
            visit[i] = true;
            DFS(i, computers, n);
            answer++;
        }
    }
    
    
    return answer;
}