티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/43162
[프로그래머스][C++] 네트워크
BFS, DFS, DFS with Stack...
#include <string>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
void bfs(int n, int i, vector<vector<int>> computers, vector<int> &visit) {
queue<int> q;
q.push(i);
visit[i] = 1;
while (!q.empty()) {
int f = q.front();
q.pop();
for (int j = 0; j < n; j++) {
if (j == f) continue;
if (computers[f][j] && !visit[j]) {
q.push(j);
visit[j] = 1;
}
}
}
}
void dfs(int n, int i, vector<vector<int>> computers, vector<int> &visit) {
visit[i] = 1;
for (int j = 0; j < n; j++) {
if (j == i) continue;
if (computers[i][j] && !visit[j]) {
dfs(n, j, computers, visit);
}
}
}
void dfsStack(int n, int i, vector<vector<int>> computers, vector<int>& visit) {
stack<int> s;
s.push(i);
visit[i] = 1;
while (!s.empty()) {
int t = s.top();
s.pop();
for (int j = 0; j < n; j++) {
if (j == t) continue;
if (computers[t][j] && !visit[j]) {
s.push(j);
visit[j] = 1;
}
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
vector<int> visit(n, 0);
for (int i = 0; i < n; i++) {
if (visit[i]) continue;
answer++;
// bfs(n, i, computers, visit);
// dfs(n, i, computers, visit);
dfsStack(n, i, computers, visit);
}
return answer;
}
'Problem Solving' 카테고리의 다른 글
[프로그래머스][C++] 기능개발 (0) | 2022.05.17 |
---|---|
[프로그래머스][C++] JadenCase 문자열 만들기 (0) | 2022.05.17 |
[프로그래머스][C++] 더 맵게 (0) | 2022.05.08 |
[백준][C++] 21608 상어 초등학교 (0) | 2022.04.21 |
[프로그래머스][C++][Java] 숫자 문자열과 영단어 (0) | 2022.03.14 |
댓글