https://programmers.co.kr/learn/courses/30/lessons/43162
코딩테스트 연습 - 네트워크
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있
programmers.co.kr
코드 설명
visited배열을 통해 네트워크가 형성될때마다 표시해줍니다. 재귀를 사용하였고 level로 넘어갈때 그전 i 를 이용하여 네트워크 형성하는지 체크후 재귀하게됩니다.
기본 그래프 문제이므로 기억이 안난다면 백준 기본문제를 다시 풀어보면 좋을것 같습니다 !!
(main문에서 항상 dfs는 0 으로 시작한다는 습관 없애자!)
코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
bool visited[201];
void dfs(int level,int n,vector<vector<int>> &computers){
visited[level]=true;
for(int i=0;i<n;i++){
if(!visited[i] && computers[level][i]==1){
dfs(i,n,computers);
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
for(int i=0;i<n;i++){
if(!visited[i]) {
answer++;
dfs(i,n,computers);
}
}
return answer;
}
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이중우선순위큐(Lv3/C++) (0) | 2021.08.23 |
---|---|
[프로그래머스] 단어변환 (C++) (0) | 2021.05.29 |
[프로그래머스] 더 맵게 (0) | 2021.05.01 |
[프로그래머스] 프린터 (0) | 2021.04.30 |
[프로그래머스] 기능개발 (0) | 2021.04.30 |