본문 바로가기
코딩 테스트

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

by zoodi 2021. 9. 6.
728x90

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/43162/solution_groups?language=cpp 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 풀이

DFS를 이용하여 n개 만큼 순회를 한다.

만약 1)방문하지 않고, 2)0이 아닌(길이있는) 경우 그 지점에서 순회를 시작한다.

순회가 끝나고 answer+1 해주면 끝!

 

3. 풀이

#include <string>
#include <vector>

using namespace std;
int visit[201]={0};

void dfs(int start, int n , vector<vector<int>> &computers){
    visit[start]= 1;
    
    for(int i=0; i<n; i++){
        if(visit[i]==0 && computers[start][i]!=0){
            dfs(i, n, computers);
        }
    }
}

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

댓글