본문 바로가기
개발/Coding Test

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

by Eunduck 2022. 6. 7.
728x90

안녕하십니까. Eun🦆입니다.

풀이법 입니다.

 

 

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

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

programmers.co.kr

#include <string>
#include <vector>
using namespace std;
int answer = 0;
bool visit[200] = {0,};
void BFS(int i, int n, vector<vector<int>> computers)
// 처음 네트워크 그룹부터 방문한 네트워크 모두 visit 처리
{
    visit[i] = 1;
    printf("visit[i=%d]=%d\n",i,visit[i]);
    for(int j=0;j<n;j++)
    {
        if(visit[j]==0 & computers[i][j]==1) // 방문하지 않았고 처음 찾은 네트워크 정보에서 값이 1인 항목
        {
            BFS(j, n, computers); // answer 값 증가 없이 추가로 visit 처리하기 위함
        }
    }
}
int solution(int n, vector<vector<int>> computers) {
    for(int i=0;i<computers.size();i++)
    {
        if(visit[i]==0) // 방문하지 않은 네트워크 = 개통안된 네트워크, 이유는 한번 들어가면 연결된 네트워크는 다 개통하기 때문에
        {
            printf("answer++\n");
            answer++;
            BFS(i, n, computers); // i가 포함된 이유, 현재 개통하는 네트워크 기억
        }
    }
    return answer;
}

 

네이버 블로그 리뉴얼입니다.

(https://blog.naver.com/unsuk1/221988662572)

728x90

댓글