DFS를 풀 때 매개변수를 줄면 코드 짜는 나도 덜 헷갈리고 메모리도 덜 소모한다.
탐색할 때 불변하는 값은 전역변수로 해두었다. (컴퓨터 총 개수)
맞았습니다 코드
#include <bits/stdc++.h>
using namespace std;
bool checked[202]; // 방문 체크 배열
int node_cnt; // 컴퓨터 총 개수
void dfs(int current, vector<vector<int>> &computers){
checked[current] = true;
for(int i = 0; i < node_cnt; i++){
if(!checked[i] && computers[current][i] == 1) // 미방문이고 서로 연결됬다면 탐색하자
dfs(i, computers);
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
node_cnt = n; // 컴퓨터 개수를 전역변수로 만든다
for(int i = 0; i < n; i++){ // 모든 노드에서 탐색 시작
if(!checked[i]){ // 미방문이라면 탐색 시작
answer++;
dfs(i, computers);
}
}
return answer;
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 여행경로 c++ (0) | 2022.04.08 |
---|---|
[프로그래머스] 단속카메라 c++ 2가지 풀이 (0) | 2022.04.06 |
[프로그래머스] 단어변환 c++ DFS (0) | 2022.04.05 |
[프로그래머스] 짝지어 제거하기 c++ (0) | 2022.04.04 |
[프로그래머스] 단어변환 c++ BFS (0) | 2022.04.02 |