STUDY/Algorithm

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

sinawi95 2022. 2. 14. 08:53
728x90

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

프림 알고리즘으로 풀었다. 크루스칼로도 풀어도 될듯

from heapq import heappop, heappush
def solution(n, costs):
    answer = 0
    adj_list = [[] for _ in range(n)]
    for s, e, c in costs:
        adj_list[s].append((c, e))
        adj_list[e].append((c, s))
    # prim
    visit = [0 for _ in range(n)]
    h = [(0, 0)]
    while h:
        cur_d, cur = heappop(h)
        if visit[cur]:
            continue
        visit[cur] = 1
        answer += cur_d
        for adj_d, adj in adj_list[cur]:
            heappush(h, (adj_d, adj))
        
    return answer

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 6087 레이저 통신 python  (0) 2022.02.14
[백준] 10282 해킹 python  (0) 2022.02.14
[백준] 11404 플로이드 C++, python  (0) 2022.02.13
[백준] 2160 그림비교 c++  (0) 2022.02.12
[백준] 18513 샘터 python  (0) 2022.02.12