import sys
def find_parent(i):
if parent[i]!=i:
parent[i]=find_parent(parent[i])
return parent[i]
def union(a,b):
a=find_parent(a)
b=find_parent(b)
if a==b:
return False
if a<b:
parent[b]=a
else:
parent[a]=b
return True
def kruskal(edges):
result=0
for cost,a,b in edges:
if union(a,b):
result+=cost
return result
input=sys.stdin.readline
n=int(input())
parent=[i for i in range(n)]
l_x=[]
l_y=[]
l_z=[]
for i in range(n):
x,y,z=map(int, input().split())
l_x.append((x, i))
l_y.append((y, i))
l_z.append((z, i))
l_x.sort()
l_y.sort()
l_z.sort()
edges=[]
for i in range(n-1):
edges.append((abs(l_x[i][0]-l_x[i+1][0]), l_x[i][1], l_x[i+1][1]))
edges.append((abs(l_y[i][0]-l_y[i+1][0]), l_y[i][1], l_y[i+1][1]))
edges.append((abs(l_z[i][0]-l_z[i+1][0]), l_z[i][1], l_z[i+1][1]))
edges.sort()
result = kruskal(edges)
print(result)
'코딩 테스트 > 문제 풀기' 카테고리의 다른 글
[프로그래머스] 영어 끝말 잇기 (0) | 2021.03.29 |
---|---|
[프로그래머스] 점프와 순간 이동 (0) | 2021.03.29 |
[프로그래머스] 배달 (0) | 2021.03.25 |
[프로그래머스] 주식가격 (0) | 2021.03.25 |
[프로그래머스] 124 나라의 숫자 (0) | 2021.03.25 |
댓글