programmers_섬 연결하기_java

2023. 3. 6. 18:16Algorithm/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