[programmers] 섬 연결하기

KwonSC·2022년 5월 23일
0

programmers - Python

목록 보기
21/23
post-thumbnail

https://programmers.co.kr/learn/courses/30/lessons/42861


Code

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

Solution

일단 costs를 비용 오름차순으로 정렬후 가장 앞에있는 원소의 첫번째 섬을 check에 넣는다. (밑에 조건문에서 섬이 check에 존재하는지 안하는지를 체크해야함, 아예 없으면 update가 안됨), 그후 while문을 check에 모든 섬이 들어갈떄까지 반복하고 그안에 for문으로 costs를 돈다. 두 섬이 모두 check에 존재하면 pass하고 둘중에 하나일때만 checkanswer, 현재 cost를 쓰지못하게 업데이트하며 break를 한다. while문이 끝나고 난후 answer를 리턴하면 끝.

0개의 댓글