안녕하십니까. Eun🦆입니다.
풀이법 입니다.
#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;
}
'개발 > Coding Test' 카테고리의 다른 글
[프로그래머스 Lv3 C++] 정수 삼각형 (0) | 2022.06.07 |
---|---|
[프로그래머스 Lv3 C++] 단속카메라 (0) | 2022.06.07 |
[프로그래머스 C++] 더 맵게 (0) | 2022.06.07 |
[프로그래머스 C++] 가장 큰 수 (0) | 2022.06.07 |
[프로그래머스 C++ Lv2] 압축 (0) | 2022.06.07 |
댓글