[프로그래머스] 섬 연결하기

ganta·2021년 1월 19일

알고리즘 문제해결

목록 보기
2/24
post-thumbnail

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

크루스칼 알고리즘이 떠올라서 구현을 해 보았다.
결과는 성공!

크루스칼 알고리즘은 이전에 정리를 해 놓았던게 있었다.
https://gilmatnote.tistory.com/40?category=904179

def get_parent(node, parent_list):
    if parent_list[node] == node:
        return node
    
    return get_parent(parent_list[node],parent_list)

def check_parent(node1, node2, parent_list):
    if get_parent(node1,parent_list) == get_parent(node2, parent_list):
        return True
    
    return False

def union_parent(node1, node2, parent_list):
    parent1 = get_parent(node1,parent_list)
    parent2 = get_parent(node2, parent_list)
    
    parent_list[parent1] = parent2
    

def solution(n, costs):
    answer = 0
    
    graph = [[0] * n for _ in range(n)]
    
    parent_list = [num for num in range(0,n)]
    
    costs.sort(key = lambda x : x[2])
    
    count = 0
    
    for cost in costs:
        if count == n-1:
            break
        
        if check_parent(cost[0], cost[1],parent_list):
            pass
        else:
            count += 1
            union_parent(cost[0], cost[1],parent_list)
            answer += cost[2]
    
    return answer

profile
한걸음씩 꾸준히

0개의 댓글