공부 기록

[프로그래머스] 네트워크 C++

by 너나나

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

 

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

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

programmers.co.kr

 

이 경우 2개의 네트워크가 있는거(1-2, 3)

이 경우 1개의 네트워크가 있는거(1-2-3)

연결된 네트워크까지 쭉 dfs로 탐색하고 아직 탐색도 안했고 연결도 안됐으면 dfs가 다시 실행되니까 그 새로 실행되는 dfs가 몇 번인지 알면 된다!!

#include <string>
#include <vector>

using namespace std;

int check[200]; // 노드에 방문했는지 안했는지 체크

void dfs(int x, int n, vector<vector<int>> computers) {
    for(int i = 0; i < n; i++) {
        check[x] = 1; // 방문한거 표시
        if(!check[i] && computers[x][i]) {
            check[i] = 1; // 방문한거 표시
            dfs(i, n, computers);
        }
    }
    return;
}

int solution(int n, vector<vector<int>> computers) {
    int answer = 0;
    for(int i = 0; i < n; i++) {
        if(!check[i]) {
            dfs(i, n, computers);
            answer++;
        }
    }
    return answer;
}

블로그의 정보

공부 기록

너나나

활동하기