programmers.co.kr/learn/courses/30/lessons/43162
코딩테스트 연습 - 네트워크
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있
programmers.co.kr
풀이 및 후기
1. computers 배열 다 돌고 후에 꼭 한번 더 parent 초기화를 해줘야된다!!!!
2. 이거때문에 TC 9번에서 계속틀림 사실 이유는 잘 모르겠다
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
int parent[201];
int getParent(int x)
{
if(parent[x]==x)
return x;
return parent[x] = getParent(parent[x]);
}
void connect(int a,int b)
{
a = getParent(a);
b = getParent(b);
if(a>b)
{
parent[a] =b;
}
else
parent[b] =a;
}
int solution(int n, vector<vector<int>> computers) {
int answer = 1;
for(int i=0;i<n;i++)
parent[i] =i;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(computers[i][j]==1)
connect(i,j);
}
}
for(int i=0;i<n;i++)
parent[i] =getParent(i);
sort(parent,parent+n);
int temp =parent[0];
for(int i=1;i<n;i++)
{
if(parent[i] != temp)
{
temp =parent[i];
answer++;
}
}
return answer;
}
'c++ > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 가장 먼 노드 C++ BFS (0) | 2020.10.31 |
---|---|
프로그래머스 : 순위 C++ (플로이드 와샬 활용) (0) | 2020.10.30 |
프로그래머스 : 단속카메라 C++ (0) | 2020.10.30 |
프로그래머스 : 섬 연결하기 C++ (0) | 2020.10.30 |
프로그래머스 : 디스크 컨트롤러 c++ (0) | 2020.10.29 |