programmers_섬 연결하기_java
2023. 3. 6. 18:16ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42861
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int n, int[][] costs) {
int answer = 0;
answer = findRoute(n, costs);
return answer;
}
public int findRoute(int n, int[][] costs){
List<Bridge>[] bridges = new List[n];
for(int i = 0; i< n; i++){
bridges[i] = new ArrayList<>();
}
int costsSize = costs.length;
for(int i = 0; i<costsSize; i++){
bridges[costs[i][0]].add(new Bridge(costs[i][1], costs[i][2]));
bridges[costs[i][1]].add(new Bridge(costs[i][0], costs[i][2]));
}
PriorityQueue<Bridge> pq = new PriorityQueue<>((o1, o2) -> o1.cost - o2.cost);
boolean[] visited = new boolean[n];
pq.offer(new Bridge(0, 0));
int costSum = 0;
while(!pq.isEmpty()){
Bridge now = pq.poll();
if(visited[now.to]) continue;
visited[now.to] = true;
costSum += now.cost;
for(Bridge next : bridges[now.to]){
if(!visited[next.to]){
pq.offer(new Bridge(next.to, next.cost));
}
}
}
return costSum;
}
public class Bridge{
int to, cost;
public Bridge(int to, int cost){
this.to = to;
this.cost = cost;
}
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_도둑질_java (0) | 2023.03.06 |
---|---|
programmers_여행경로_java (0) | 2023.03.06 |
programmers_가장 먼 노드_java (0) | 2023.03.06 |
programmers_스티커 모으기(2)_java (0) | 2023.03.06 |
programmers_징검다리 건너기_java (0) | 2023.03.06 |