본문 바로가기
Study/Coding Test

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

by 들숨날숨흡 2023. 7. 31.
728x90

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

 

프로그래머스

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

programmers.co.kr

 

(1) C++

#include <string>
#include <vector>

#define MAX 201
using namespace std;

int visited[MAX] = {0,};


void dfs(int current, int n, vector<vector<int>> graph){
    visited[current] = 1;
    for(int i = 0; i < n; i++){
        if(visited[i] == 0 && graph[current][i] == 1){
            dfs(i, n, graph);
        }
    }
}

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

(2) Python

from collections import deque
        
def solution(N, computers):
    answer = 0
    visited = [0] * N
    
    for i in range(N):
        if visited[i] == 1:
            continue
        else:
            q = deque()
            q.append(i)
            while q:
                v = q.popleft()
                for j in range(N):
                    if visited[j] == 0 and computers[v][j] == 1:
                        visited[j] = 1
                        q.append(j)
            answer += 1
                    
    return answer
728x90