문제 설명
n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요.
다리를 여러 번 건너더라도, 도달할 수만 있으면 통행 가능하다고 봅니다. 예를 들어 A 섬과 B 섬 사이에 다리가 있고, B 섬과 C 섬 사이에 다리가 있으면 A 섬과 C 섬은 서로 통행 가능합니다.
제한사항
풀이과정
파이썬 풀이
def solution(n, costs):
answer = 0
costs.sort(key = lambda x : x[2])
link = set([costs[0][0]])
while len(link) < n:
for v in costs:
if v[0] in link and v[1] in link:
continue
if v[0] in link or v[1] in link:
link.update([v[0],v[1]])
answer += v[2]
break
return answer
자바스크립트 풀이
function solution(n, costs) {
var answer = 0;
costs.sort((a,b) => (a[2]-b[2]))
let link = new Set([costs[0][0]]);
while(link.size < n){
for(let v = 0 ; v < costs.length; v++){
if(link.has(costs[v][0]) && link.has(costs[v][1])){
continue;
}
if(link.has(costs[v][0]) || link.has(costs[v][1])){
answer += costs[v][2]
link.add(costs[v][0])
link.add(costs[v][1])
break
}
}
}
return answer;
}