[프로그래머스]
프로그래머스 전력망을 둘로 나누기 C++
Hevton
2023. 9. 3. 14:56
반응형
나름 괜찮게 풀었다.
추천 수를 가장 많이 받은 다른 분의 풀이가 나랑 같았다. 뿌듯했다.
#include <string>
#include <vector>
#include <cmath>
#include <cstring>
using namespace std;
int counter = 0;
bool visit[101];
void dfs(vector<vector<int>>& v, int num) {
counter++;
visit[num] = true;
for(int i = 0; i < v[num].size(); i++) {
if(!visit[v[num][i]]) {
dfs(v, v[num][i]);
}
}
}
int solution(int n, vector<vector<int>> wires) {
int answer = n;
for(int i = 0; i < n - 1; i++) {
vector<vector<int>> v(n + 1, vector<int>());
memset(visit, 0, sizeof(visit));
counter = 0;
for(int j = 0; j < n - 1; j++) {
if(i == j)
continue;
else {
// 양방향 연결
v[wires[j][0]].push_back(wires[j][1]);
v[wires[j][1]].push_back(wires[j][0]);
}
}
dfs(v, 1);
if(abs(counter - abs(n - counter)) <= answer)
answer = abs(counter - abs(n - counter));
}
return answer;
}
dfs는 한 번으로도 풀 수 있다.
반응형