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

2021. 10. 19. 22:48문제풀기/프로그래머스

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

 

코딩테스트 연습 - 섬 연결하기

4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4

programmers.co.kr

전형적인 크루스칼 알고리즘이다.

https://cseella.tistory.com/117?category=940613 (4번에 크루스칼 알고리즘)

import heapq
def find_parent(parent,a):
    if parent[a] != a:
        parent[a] = find_parent(parent,parent[a])
    return parent[a]

def union_parent(parent,a,b):
    a = find_parent(parent,a)
    b = find_parent(parent,b)
    
    if a<b:
        parent[b] = a
    else:
        parent[a] = b
        
def solution(n, costs):
    answer = 0
    queue = []
    parent = [i for i in range(n)]
    
    for a,b,c in costs:
        heapq.heappush(queue,[c,a,b])
        
    while queue:
        length, a, b = heapq.heappop(queue)
        
        if find_parent(parent,a) != find_parent(parent,b):
            answer += length
            union_parent(parent,a,b)
        
    return answer
 

8 . 그래프 이론

1. 그래프 관련해서 이미 배운 내용 정리 - 그래프랑 노드와 노드 사이에 연결된 간선의 정보를 가지고 있는 자료구조를 의미한다. - 그래프와 트리 비교 그래프 트리 방향성 방향 그래프 혹은 무

cseella.tistory.com