문제를 어떤 방식으로 해결하려 했는지 그 과정을 적어주세요. 초기에 접근한 방법과 최종 접근이 차이가 없으면 한개만 적어도 됩니다.
뭐 이런 과정...
어떤 알고리즘 또는 기법을 사용해 문제를 해결했는지 알려주세요
def getHead(node, cnt): # 헤드 구해주는 함수
global head_list
if head_list[node] != node:
return getHead(head_list[node], cnt+1)
else:
# 여기에서의 cnt는 깊이를 말하는 거랄까,,,
return (node, cnt)
while True:
M, N = map(int, input().split())
# ㅋㅋ 이 종료조건 이상해~
if M==0 and N==0:
break
roads = [] # 아낀 돈 구해주기 위한,,,
total_arr = []
for i in range(N):
a, b, c = map(int, input().split())
roads.append(c)
total_arr.append((a, b, c))
# 거리 기준으로 정렬
total_arr = sorted(total_arr, key = lambda dist:dist[2])
# 각 node에 대한 head node 본인으로 초기화
head_list = [i for i in range(M)]
res = 0
for elec in total_arr:
verA, verB, dist = elec
aHead, aCnt = getHead(verA, 0)
bHead, bCnt = getHead(verB, 0)
if aHead != bHead:
res += dist
# 깊이가 더 깊은 거에 짧은 거 넣어줄거야!
if aCnt >= bCnt:
head_list[bHead] = aHead
else:
head_list[aHead] = bHead
print(sum(roads) - res)
솔루션에 접근하기 까지 아쉬웠던 부분 들을 적어주세요. 솔루션을 참조하고나서야 고친 점들을 적어주세요. 솔루션의 링크도 적어주세요. 막힘 없이 구현했다면, 생략해도 좋습니다.
'NoneType' object is not iterable 오류 해결 방법
해당 문제를 통해 배운 내용 들을 적어주세요. 어떤 알고리즘, 코딩 기법,자료구조 등을 알게됐다. 문법적 요소도 좋습니다. 크게 없으면 생략해도 좋습니다.