문제를 어떤 방식으로 해결하려 했는지 그 과정을 적어주세요. 초기에 접근한 방법과 최종 접근이 차이가 없으면 한개만 적어도 됩니다.
어떤 알고리즘 또는 기법을 사용해 문제를 해결했는지 알려주세요
V, E = map(int, input().split())
v_list = [] # (ver1, ver2, len)
for i in range(E):
a, b, c = map(int, input().split())
v_list.append((a, b, c))
# 거리 기준으로 정렬
v_list = sorted(v_list, key = lambda vertex:vertex[2])
# 집합? 형태로 저장해둘 배열
sets = []
for i in range(V):
sets.append([i+1])
# v_list 돌면서 연결되어있는 두 노드가 같은 위치의 집합에 있는지 확인
res = 0
for vertex in v_list:
first, second, dist = vertex
flag = True
for s in range(len(sets)):
# 같은 위치에 있으면 그냥 넘기고 (순환?되면 안되니깐!)
if first in sets[s] and second in sets[s]:
flag = False
continue
# 다른 위치에 있으면 각각의 위치 기록해줌
if first in sets[s]:
first_index = s
if second in sets[s]:
second_index = s
# 각 노드가 들어가있던 거 하나로 합쳐주기
if flag == True:
sets[first_index] += sets[second_index]
sets.pop(second_index)
res += dist
# 모든 노드들이 하나의 배열에 다 들어가있따면 종료
if len(sets[0]) == V:
break
print(res)
솔루션에 접근하기 까지 아쉬웠던 부분 들을 적어주세요. 솔루션을 참조하고나서야 고친 점들을 적어주세요. 솔루션의 링크도 적어주세요. 막힘 없이 구현했다면, 생략해도 좋습니다.
파이썬 정렬시 특정 기준으로 정렬하는 방법 - key Fucntion, repr 메소드
해당 문제를 통해 배운 내용 들을 적어주세요. 어떤 알고리즘, 코딩 기법,자료구조 등을 알게됐다. 문법적 요소도 좋습니다. 크게 없으면 생략해도 좋습니다.