https://programmers.co.kr/learn/courses/30/lessons/86971
union find로 한개씩 빼보면서 가장 비슷하게 나뉘는 값을 리턴해준다.
union 하고나서 마지막에 갱신을 위해 모든 원소에 대해 find 한번씩 해주는것 빼먹지말자
def solution(n, wires):
def find(f,x):
if f[x] == x:
return x
f[x] = find(f,f[x])
return f[x]
def union(f,a,b):
a = find(f,a)
b = find(f,b)
if f[a] == f[b]:
return
elif a < b:
f[b] = a
elif b < a:
f[a] = b
answer_list = []
for i in range(n-1):
f = [k for k in range(n+1)] # parent 생성
for j in range(n-1):
if i == j: continue # 한개씩 빼봄
a,b = wires[j][0],wires[j][1]
union(f,a,b) # union
for m in range(1,n+1): # 최종 갱신
find(f,m)
one = f.count(1)
two = n-one
answer_list.append(abs(one-two))
return min(answer_list)
갱신을 왜 해주는건가요?