Muscardinus

섬 연결하기 본문

알고리즘 문제/[프로그래머스] Lv3

섬 연결하기

Muscardinus 2021. 2. 13. 21:05
728x90

programmers.co.kr/learn/courses/30/lessons/42861?language=javascript

 

코딩테스트 연습 - 섬 연결하기

4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4

programmers.co.kr

function solution(n, costs) {
    let answer = 0;
    let isLand = {}; // 섬 정보
    let bridge = {}; // 다리 정보
    let total = 0; // 지어진 다리 갯수
    
    costs.sort((a, b) => a[2] - b[2]);
    isLand[costs[0][0]] = true;
    isLand[costs[0][1]] = true;
    bridge[0] = true;
    answer += costs[0][2];
    total += 2;
    
    while (total < n) {
        for (let i = 1; i < costs.length; i++) {
            let [start, end, cost] = costs[i];
            if (!bridge[i] && ((isLand[start] && !isLand[end]) || (!isLand[start] && isLand[end]))) {
                isLand[start] = true;
                isLand[end] = true;
                bridge[i] = true;
                answer += cost;
                total++;
                break;
            }
        }
    }
    return answer;
}
728x90

'알고리즘 문제 > [프로그래머스] Lv3' 카테고리의 다른 글

디스크 컨트롤러  (0) 2021.02.15
베스트 앨범  (0) 2021.02.14
풍선 터트리기  (0) 2021.02.12
N으로 표현  (0) 2021.02.12
[프로그래머스] 여행경로 (Lv3)  (0) 2020.09.09
Comments