반응형
나름 괜찮게 풀었다.
추천 수를 가장 많이 받은 다른 분의 풀이가 나랑 같았다. 뿌듯했다.
#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는 한 번으로도 풀 수 있다.
반응형
'[프로그래머스]' 카테고리의 다른 글
프로그래머스 멀쩡한 사각형 C++ (1) | 2023.09.06 |
---|---|
프로그래머스 수식 최대화 C++ (0) | 2023.09.05 |
프로그래머스 점 찍기 C++ (0) | 2023.09.03 |
프로그래머스 리코쳇 로봇 C++ (0) | 2023.09.01 |
프로그래머스 과제 진행하기 C++ (0) | 2023.08.30 |