์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 2579
- C++
- ๊ฐ๋ฐ์์ค๋น #์ปดํจํฐ๊ณตํ๊ณผ
- html #css์ ๋ฌธ #visual studio
- ๋์ ํ ๋น๋ฒ
- HTML์ ๋ฌธ
- ๋ฐฑ์ค
- GitHub
- ๋ฏธ๊ตญ์ฌํ #๋ฏธ๊ตญ์ ๊ตญ์ฌํ
- Today
- Total
๐๊ฐ๋ฐ๊ณผ ์ผ์ (โง∇โฆ)๏พ
[ํ๋ก๊ทธ๋๋จธ์ค/C++] ๋คํธ์ํฌ (DFS,BFS - L3) ๋ณธ๋ฌธ
https://school.programmers.co.kr/learn/courses/30/lessons/43162
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๊ฐ ๋ ธ๋๋ค์ด ์ฐ๊ฒฐ๋์ด์๋์ง๋ฅผ ํ์ ํ๊ณ ํ ๋ฌถ์์ ๋คํธ์ํฌ๋ผ ์นญํ๋ค.
์ฌ๊ธฐ์ ๋คํธ์ํฌ๊ฐ ์ด ๋ช๊ฐ์ธ์ง? ์ถ๋ ฅํ๋ ๋ฌธ์ .
BFS๋ก๋ ๊ฐ๋ฅํ๋ค. ํ์๋ DFS๋ก ํ์๊ณ ,
๊ฐ ๋ ธ๋ ๋ณ๋ก ํ์์ ํ๋, ํ๋ฒ ํ์์ ํ๋ ๊ธฐ๋ก์ visited์ ์ ์ฅํด์ ๋ ์ด์ ํ์ํ์ง ์๋๋ก ํ๋ค.
์๋๋ฉด ๋จ ํ๋๋ผ๋ ์ฐ๊ฒฐ์ด ๋๋ฉด ๊ทธ ๋ ธ๋๋ ๋คํธ์ํฌ์ ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ชจ๋ ๋ ธ๋์๋ ์ฐ๊ฒฐ๋์ง ์์ ๋ ธ๋์ ๊ฒฝ์ฐ๋ ๋ ธ๋ ํ๋๋ง ์๋ ๋จ์ผ ๋คํธ์ํฌ์ด๋ฏ๋ก ๊ทธ ๋ถ๋ถ์ ์ธ๋ ์ฒ๋ฆฌ๋ฅผ ์งํํธ๋ค.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
bool visited[201];
vector<int> connected[201];
int n;
void DFS(int idx){
//๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ์งํ
if(visited[idx] == false) visited[idx] = true;
else return;
//์ฐ๊ฒฐ๋ ๋
ธ๋๋ค์ ํ์ธ
for(int i = 0; i < connected[idx].size(); i++){
//์ฐ๊ฒฐ๋์ด ์์ ๊ฒฝ์ฐ, ํ์
DFS(connected[idx][i]);
}
}
int solution(int _n, vector<vector<int>> computers) {
// 1 <= n <= 200 ์์ฐ์
n = _n;
int answer = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(i == j) continue;
if(computers[i][j] == 1) connected[i].push_back(j);
}
}
//๊ฐ ๋
ธ๋๋ณ ํ์์ ์งํํ๋ค
for(int i = 0; i < n ; i++){
//ํ๋๋ ์ฐ๊ฒฐ๋์ด์์ง ์์ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ํ๋๋ก ์ทจ๊ธ
if(connected[i].size() == 0){
cout << "alone" << endl;
answer++;
continue;
}
//์ฐ๊ฒฐ๋์ด ์์ง๋ง,
if(visited[i] == false) {
cout << "ํ์" << endl;
DFS(i);
answer++;
}
}
return answer;
}
๊ฒฐ๊ณผ
'CS > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/C++] ๋ ํ ํฉ ๊ฐ๊ฒ ๋ง๋ค๊ธฐ (queue - L2) (1) | 2023.11.21 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/C++] ํ๋ก์ธ์ค (์คํ,ํ - L2) (0) | 2023.11.17 |
[๋ฐฑ์ค c++] 1937 ์์ฌ์์ด ํ๋ค (๊ณจ3) (0) | 2023.11.15 |
[๋ฐฑ์ค c++] 1030 ํ๋ ํํ๋ฉด (๊ณจ3) (0) | 2023.10.02 |
[๋ฐฑ์ค c++] 1149 RGB๊ฑฐ๋ฆฌ (์ค1) (0) | 2023.09.25 |