https://school.programmers.co.kr/learn/courses/30/lessons/43162
이번 문제는 DFS 문제였습니다.
📝 문제 풀이
1. 0 컴퓨터를 시작으로 i 컴퓨터와 직간접적으로 연결된 모든 컴퓨터(computers[i])를 탐색
2. i 컴퓨터와 직간접적으로 연결된 컴퓨터는 방문 표시 visited[i] = true
3. DFS 함수가 종료되면 answer += 1 (하나의 네트워크임을 표현)
👩🏻💻 C++ 코드
#include <string>
#include <vector>
#define MAX 200
using namespace std;
bool visited[MAX];
void DFS(int i, int n, vector<int> &computer, vector<vector<int>> &computers) {
visited[i] = true;
for (int i=0; i<n; i++) {
if (visited[i] || computer[i] == 0) continue;
DFS(i, n, computers[i], computers);
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
for (int i=0; i<n; i++) {
if (visited[i]) continue;
DFS(i, n, computers[i], computers);
answer += 1;
}
return answer;
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 찾기 C++ (0) | 2023.04.08 |
---|---|
[프로그래머스] 단어 변환 C++ (0) | 2023.04.08 |
[프로그래머스] 미로 탈출 C++ (0) | 2023.04.07 |
[프로그래머스] 괄호 회전하기 C++ (0) | 2023.04.06 |
[프로그래머스] 빛의 경로 사이클 C++ (Lv.2) (0) | 2023.04.04 |