프로그래머스 - 섬 연결하기

이서현·2021년 6월 19일
0

Algorithm

목록 보기
44/76

06.20에 푼 문제입니다.🌷
섬 연결하기

Find-Union 알고리즘을 사용했다.

  1. costs 에서 비용이 작은 것부터 오름차순으로 정렬한다.

  2. cycle table을 만들어서 index값을 배열에 넣는다.
    ex) n=5 [0,1,2,3,4]

  3. Find-Union 알고리즘

배열 내에 모든 값이 동일하면 모든 섬을 방문한 것이므로 중단한다!

function solution(n, costs) {
    var answer = 0;
    costs.sort((a,b)=>a[2]-b[2])
    let table = []
    for(let i=0;i<n;i++) table.push(i)
    for(let cost of costs){
        if(cost[0]>cost[1]){
            let tmp=cost[0]
            cost[0]=cost[1]
            cost[1]=tmp
        }
        if(table[cost[1]]===table[cost[0]]) continue
       let des = table[cost[0]]
       let go = table[cost[1]]
        for(let i=0;i<n;i++){
            if(table[i]===go){
                table[i]=des}
        }
        answer+=cost[2]
        const tableset=new Set(table)
        if(tableset.size===1) break
    }
    
    return answer;
}
profile
안녕하세요. 이서현입니다( ღ'ᴗ'ღ )

0개의 댓글