https://programmers.co.kr/learn/courses/30/lessons/42861
def solution(n, costs):
answer = 0
costs.sort(key=lambda x : x[2])
check = set([costs[0][0]])
while (len(check) < n):
for i, cost in enumerate(costs):
if (cost[0] in check and cost[1] in check):
continue
elif (cost[0] in check or cost[1] in check):
check.update([cost[0], cost[1]])
answer += cost[2]
costs[i] = [-1, -1, -1]
break
return answer
일단 costs
를 비용 오름차순으로 정렬후 가장 앞에있는 원소의 첫번째 섬을 check
에 넣는다. (밑에 조건문에서 섬이 check에 존재하는지 안하는지를 체크해야함, 아예 없으면 update가 안됨)
, 그후 while
문을 check
에 모든 섬이 들어갈떄까지 반복하고 그안에 for
문으로 costs
를 돈다. 두 섬이 모두 check
에 존재하면 pass하고 둘중에 하나일때만 check
와 answer
, 현재 cost
를 쓰지못하게 업데이트하며 break를 한다. while
문이 끝나고 난후 answer
를 리턴하면 끝.