프로그래머스 네트워크 c++
2023. 9. 30. 14:48ㆍ알고리즘
dfs로 풀 수 있는 문제이다. 결국 n개의 컴퓨터가 존재하는거니까 컴퓨터가 방문되지 않았다면 그 컴퓨터부터 연결된 모든 컴퓨터들을 방문하고 (dfs 수행) visited 배열에 방문 기록을 업데이트 해준다.
그리고 다시 n개의 컴퓨터에 대해서 방문하지 않았다면 그 컴퓨터부터 네트워크에 속하는 컴퓨터들을 탐색해준다.
그리고 이렇게 방문한 n개의 컴퓨터 개수가 네트워크 개수가 된다.
#include <string>
#include <vector>
using namespace std;
int N;
int visited[201];
vector<vector<int>> connected;
void dfs(int x){
for (int i=0;i<N;i++){
if (connected[x][i]==1 && !visited[i]){
visited[i]=1;
dfs(i);
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
connected = computers;
N=n;
for (int i=0;i<n;i++){
if (!visited[i]){
visited[i]=1;
dfs(i);
answer++;
}
}
return answer;
}
'알고리즘' 카테고리의 다른 글
프로그래머스 단어변환 C++ (2) | 2023.09.30 |
---|---|
프로그래머스 게임 맵 최단거리 C++ (0) | 2023.09.30 |
프로그래머스 타겟넘버 C++ (0) | 2023.09.30 |
백준 균형잡힌 세상 C++ (0) | 2023.09.29 |
프로그래머스 단어퍼즐 c++ (0) | 2023.09.29 |