import copy
def find_node(tower_num, wires_arr):
cnt = 0
for wire in wires_arr:
if tower_num in wire:
arr = copy.deepcopy(wires_arr)
arr.remove(wire)
cnt += 1
cnt += find_node(wire[abs(wire.index(tower_num)-1)], arr)
return cnt
def solution(n, wires):
answer = -1
group_diff = []
for wire in wires:
r_tower1 = wire[0]
r_tower2 = wire[1]
wires_tmp = copy.deepcopy(wires)
wires_tmp.remove(wire)
group_diff.append(abs(find_node(r_tower1, wires_tmp)-find_node(r_tower2, wires_tmp)))
answer = min(group_diff)
return answer
구현 내용
- wires를 하나씩 탐색
- 해당하는 wire로 연결된 송전탑이 각각의 root 송전탑이 됨
- root 송전탑과 연결된 송전탑들의 개수를 각각 구해서 차를 구한 후 최소값을 return
다른 사람의 풀이
def solution(n, wires):
ans = n
for sub in (wires[i+1:] + wires[:i] for i in range(len(wires))):
s = set(sub[0])
[s.update(v) for _ in sub for v in sub if set(v) & s]
ans = min(ans, abs(2 * len(s) - n))
return ans