from collections import deque
def solution(n, wires):
min = 10000000000
# 원본이 바뀌지 않도록 배열을 새로 복사를 해주고 pop(i)를 통해 줄을 하나씩 끊는다.
for i in range(n-1):
global visited
wires2 = wires[::]
graph = [[] for _ in range(n+1)]
wires2.pop(i)
visited = [0] * (n+1)
for j in wires2:
graph[j[0]].append(j[1])
graph[j[1]].append(j[0])
def dfs(i):
global visited
global cnt
visited[i] = 1
for j in graph[i]:
if visited[j] == 0:
visited[j] = 1
cnt += 1
dfs(j)
return cnt
# 노드의 개수를 cnt로 세준다음 cal안에 저장시킨다.
cal = []
for x in range(1, n+1):
global cnt
cnt = 0
if visited[x] == 0:
cal.append(dfs(x))
# cal 안의 갚을 서로 빼준 후 절댓값을 씌워 전력망들의 차이가 가장 적은 것을 찾는다.
if min > abs(cal[0] - cal[1]):
min = abs(cal[0] - cal[1])
return min
- 원본을 해치치 않게끔 슬라이싱을 통해 원본을 복제한다.
- 반복문과 pop을 통해 줄을 하나씩 끊어본다.
- 끊은 줄을 통해 dfs를 돌리고, 노드들의 개수를 세준다.
- 센 노드들의 서로의 차를 구하고 절댓값을 씌워 최솟값과 비교한다.