honey_pot
[Python] 섬 연결하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42861
크루스칼 알고리즘 문제
정점으로 가는 비용을 오름차순으로 정렬하고
맨 처음에 있는 요소 0을 부모요소로써 route에 추가하고 시작한다
0이 이미 부모로 존재하므로 현재 노드가 route에 없다면 두번째 조건문이 작동한다
set 객체인 route에 부모노드인 cost[0], 자식노드인 cost[1]을 넣어주고 answer에 비용을 더해준다
추가된 정점은 삭제하거나 [-1,-1,-1] 같은 문제상 무의미한 값으로 바꾼다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from collections import defaultdict
def solution(n, costs):
answer = 0
costs.sort(key=lambda x: x[2])
route = set([costs[0][0]])
while len(route) != n:
for i,cost in enumerate(costs):
if cost[0] in route and cost[1] in route:
continue
if cost[0] in route or cost[1] in route:
route.update([cost[0], cost[1]])
answer += cost[2]
del costs[i]
break
return answer
|
cs |
'문제 풀이' 카테고리의 다른 글
[python] 디스크 컨트롤러 (0) | 2022.09.29 |
---|---|
[Python] 가장 먼 노드 (0) | 2022.09.28 |
[Python] 보석 쇼핑 (1) | 2022.09.23 |
[Python] 불량 사용자 (0) | 2022.09.23 |
[Python] 단속카메라 (0) | 2022.09.23 |
Comments