☑️ 문제: 전력망을 둘로 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/86971
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
☑️ Code
더보기
오늘은 설계는 어렵지 않았어서, 다른 사람 풀이를 보면서 코드를 다듬고 좋은 건 참고하는 것에 집중했다.
(확실히 DFS가 코드가 짧아져서 가독성이 좋아지는 것 같다.)
class Solution {
int min;
boolean[][] connect;
boolean[] visited;
public int solution(int n, int[][] wires) {
// 1. init
min = n;
connect = new boolean[n + 1][n + 1];
visited = new boolean[n + 1];
for (int[] wire : wires) {
int w1 = wire[0];
int w2 = wire[1];
connect[w1][w2] = connect[w2][w1] = true;
}
// 2. search
dfs(1, n);
return min;
}
int dfs(int v, int n) {
visited[v] = true;
int child = 1;
for (int w = 1; w <= n; w++) {
if (!visited[w] && connect[v][w]) {
visited[w] = true;
child += dfs(w, n);
}
}
min = Math.min(min, Math.abs(child - (n - child)));
return child;
}
}
'TIL (Today I Learned)' 카테고리의 다른 글
99클럽 코테 스터디 38일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.29 |
---|---|
99클럽 코테 스터디 37일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.28 |
99클럽 코테 스터디 35일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.25 |
99클럽 코테 스터디 34일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.24 |
99클럽 코테 스터디 33일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.24 |