https://school.programmers.co.kr/learn/courses/30/lessons/86971
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 - 나의 생각
선분을 하나씩 제거하면서 BFS로 방문 후 나눠진 전력망의 크기를 비교했습니다.
코드
import java.util.*;
class Solution {
static List<Integer>[] list;
static boolean[] visited;
public int solution(int n, int[][] wires) {
int start = 0, end = 0, A = 0, B = 0, diff = 0, min = Integer.MAX_VALUE;
list = new ArrayList[n+1];
for(int i = 0; i <= n; i++){
list[i] = new ArrayList<>();
}
for(int i = 0; i < wires.length; i++){
start = wires[i][0];
end = wires[i][1];
list[start].add(end);
list[end].add(start);
}
for(int i = 0; i < wires.length; i++){
start = wires[i][0];
end = wires[i][1];
visited = new boolean[n+1];
A = check(start, end);
B = n - A;
diff = Math.abs(B - A);
if(diff == 0) return 0;
min = Math.min(min, diff);
}
return min;
}
public int check(int start, int exclude){
int cnt = 0;
Queue<Integer> q = new ArrayDeque<>();
q.offer(start);
visited[start] = true;
while(!q.isEmpty()){
int now = q.poll();
cnt++;
for(Integer next : list[now]){
if(visited[next] || exclude == next) continue;
visited[next] = true;
q.offer(next);
}
}
return cnt;
}
}
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
기능개발 - Pyton, Deque, Math.ceil (0) | 2024.11.13 |
---|---|
게임 맵 최단거리 - Python, deque, bfs (1) | 2024.11.10 |
2022 KAKAO TECH INTERNSHIP > 두 큐 합 같게 만들기 - JAVA (0) | 2024.02.06 |
코딩테스트 연습탐욕법 > 큰 수 만들기 - JAVA (Stack) (0) | 2024.02.06 |
코딩테스트 연습 > 다리를 지나는 트럭 - JAVA (Queue) (0) | 2024.02.04 |