#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
bool network[201][201];
bool check[201][201];
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
for(int i = 0; i < 201; i++) {
fill(network[i], network[i] + 201, 0);
fill(check[i], check[i] + 201, 0);
}
for(int idx = 0; idx < n; idx++) {
for(int i = 0; i < n; i++) {
if(!computers[idx][i]) { continue; }
network[idx][i] = true;
network[i][idx] = true;
}
}
queue<pair<int, int>> mainQ;
for(int idx = 0; idx < n; idx++) {
for(int i = 0; i < n; i++) {
if(check[idx][i] || !computers[idx][i]) { continue; }
while(!mainQ.empty()) { mainQ.pop(); }
mainQ.push( { idx, i });
while(!mainQ.empty()) {
int y = mainQ.front().first;
int x = mainQ.front().second;
mainQ.pop();
for(int j = 0; j < n; j++) {
if(check[x][j] || !computers[x][j]) { continue; }
check[x][j] = true;
mainQ.push( { y, j });
}
}
answer++;
}
}
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[프로그래머스]여행경로 (0) | 2020.03.13 |
---|---|
[프로그래머스]단어 변환 (0) | 2020.03.12 |
[프로그래머스]카펫 (0) | 2020.03.12 |
[프로그래머스]베스트앨범 (0) | 2020.03.12 |
[프로그래머스]위장 (0) | 2020.03.12 |