네트워크

고장난·2021년 7월 31일
https://programmers.co.kr/learn/courses/30/lessons/43162
#include <string>
#include <vector>

using namespace std;

void dfs(int node, vector<vector<int>>& computers, vector<bool>& visited, int n){
    visited[node]=true;
    for(int i=0;i<n;i++){
       if(!visited[i]&&computers[node][i])dfs(i,computers,visited,n); 
    }    
}

int solution(int n, vector<vector<int>> computers) {
    int answer = 0;
    vector<bool> visited(n,false);
    for(int i=0;i<n;i++){
        if(!visited[i]){
            answer++;
            dfs(i,computers,visited,n);
        }
    }
    
    
    return answer;
}
정확성  테스트
테스트 1 〉	통과 (0.01ms, 3.93MB)
테스트 2 〉	통과 (0.01ms, 3.95MB)
테스트 3 〉	통과 (0.01ms, 3.94MB)
테스트 4 〉	통과 (0.01ms, 3.93MB)
테스트 5 〉	통과 (0.01ms, 3.94MB)
테스트 6 〉	통과 (0.02ms, 3.94MB)
테스트 7 〉	통과 (0.01ms, 3.9MB)
테스트 8 〉	통과 (0.02ms, 3.82MB)
테스트 9 〉	통과 (0.01ms, 3.92MB)
테스트 10 〉	통과 (0.02ms, 3.93MB)
테스트 11 〉	통과 (0.04ms, 4MB)
테스트 12 〉	통과 (0.05ms, 3.96MB)
테스트 13 〉	통과 (0.03ms, 3.72MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
깊이우선 탐색 문제이다.

깊이우선 탐색방식에서 재귀함수를 이용해 보았고 추후 stack을 이용한 코드를 작성 해볼 예정

점의 방문 여부를 판단하고 깊이우선 탐색을 하는 방식을 for문으로 돌렸다.

profile
훈련중

0개의 댓글