본문 바로가기
프로그래머스

[프로그래머스] level 3 - 네트워크, C++

by 황인태(intaehwang) 2020. 5. 7.
반응형

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

 

프로그래머스

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

programmers.co.kr

자세한 문제의 설명은 링크를 참고하길 바란다.

간접 리스트를 구하고 chk배열을 이용하여 방문여부를 파악하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <string>
#include <vector>
#include <queue>
#include <cstdio>
 
using namespace std;
 
 
int solution(int n, vector<vector<int>> computers) {
    int answer = 0;
    vector<int> v[201];
    for (int i = 0; i < computers.size(); i++) {
        for (int j = 0; j < computers[i].size(); j++) {
            if (i == j) continue;
            if (computers[i][j] == 1) {
                v[i].push_back(j);
                v[j].push_back(i);
            }
        }
    }
    vector<bool> chk(n, false);
    queue<int> q;
    for (int i = 0; i < n; i++) {
        if (chk[i]) continue;
        chk[i] = true;
        q.push(i);
        answer += 1;
        while (!q.empty()) {
            int node = q.front();
            q.pop();
            for (int k = 0; k < v[node].size(); k++) {
                int next = v[node][k];
                if (chk[next]) continue;
                chk[next] = true;
                q.push(next);
            }
        }
    }
    return answer;
}
cs
반응형
Buy me a coffeeBuy me a coffee

댓글