일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- kaggle
- Substring with Concatenation of All Words
- Decorator
- Python Implementation
- DWG
- Python
- Generator
- LeetCode
- Python Code
- 109. Convert Sorted List to Binary Search Tree
- Protocol
- Convert Sorted List to Binary Search Tree
- 315. Count of Smaller Numbers After Self
- 파이썬
- attribute
- Class
- 30. Substring with Concatenation of All Words
- Regular Expression
- concurrency
- 컴퓨터의 구조
- 시바견
- data science
- 43. Multiply Strings
- 715. Range Module
- t1
- 운영체제
- 프로그래머스
- 밴픽
- shiba
- iterator
Archives
- Today
- Total
Scribbling
프로그래머스: 섬 연결하기 본문
섬을 연결하는 최소 비용을 구하는 문제로, 최소 신장 트리 문제에 해당된다.
자연스럽게 크루스칼 알고리즘을 떠올릴 수 있다.
최소 신장 트리 혹은 크루스칼 알고리즘이 궁금하다면, 아래 링크로!
(간단히 말하자면, 크루스칼 알고리즘은 비용이 가장 적게 드는 edge부터 연결시켜가는 알고리즘이다)
https://focalpoint.tistory.com/15
def solution(n, costs):
def find_parent(parent, x):
if parent[x] == x:
return x
parent[x] = find_parent(parent, parent[x])
return parent[x]
def union(parent, a, b):
a = find_parent(parent, a)
b = find_parent(parent, b)
if a < b:
parent[b] = a
else:
parent[a] = b
answer = 0
parent = [i for i in range(n)]
costs.sort(key=lambda x: x[2])
for cost in costs:
a, b, c = cost
if find_parent(parent, a) != find_parent(parent, b):
union(parent, a, b)
answer += c
return answer
'Computer Science > Coding Test' 카테고리의 다른 글
LeetCode: 106. Construct Binary Tree from Inorder and Postorder Traversal (0) | 2021.10.21 |
---|---|
프로그래머스: 단속카메라 (0) | 2021.10.21 |
프로그래머스: 구명보트 (0) | 2021.10.21 |
프로그래머스: 큰 수 만들기 (0) | 2021.10.20 |
LeetCode: 105. Construct Binary Tree from Preorder and Inorder Traversal (0) | 2021.10.20 |