๐ค ํ์ด ์ฝ๋
import copy
from collections import deque
def bfs(start, tree, n):
visited = [False for _ in range(n+1)]
queue = deque()
queue.append(start)
visited[start] = True
result = 1
while queue:
now = queue.popleft()
for next_node in tree[now]:
if not visited[next_node]:
queue.append(next_node)
visited[next_node] = True
result += 1
return result
def solution(n, wires):
answer = n
adjust_arr = [[] for _ in range(n+1)]
for wire in wires:
a, b = wire
adjust_arr[a].append(b)
adjust_arr[b].append(a)
for cut_wire in wires:
cuta, cutb = cut_wire
copied_arr = copy.deepcopy(adjust_arr)
copied_arr[cuta].remove(cutb)
copied_arr[cutb].remove(cuta)
answer = min(answer, abs(bfs(cuta, copied_arr, n) - bfs(cutb, copied_arr, n)))
return answer
๐ค ํ์ด ์ค๋ช
ํ์ด๊ฐ ๊ต์ฅํ ๊ธธ์ง๋ง, ํฌ๊ฒ ์ด๋ ต์ง ์์ต๋๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง ์ก์ ํ์ ๊ฐ์๋ ๊ธฐ๊ปํด์ผ 100๊ฐ, ์ ์ ์ ์๋ ์ต๋ 99๊ฐ์ ๋๋ค.
์ ๋ ฅ๋ง์ ํ๋์ฉ ๋์ด๋ณด๊ณ , ๋์ ๊ฒฝ์ฐ์ ์ ๋คํธ์ํฌ์ ๋ ธ๋ ์๋ฅผ ์ธ๊ธฐ๋ง ํ๋ฉด ๋๋ ๋ฌธ์ ์ ๋๋ค.
์ฐ์ , ์ธ์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ฃผ๊ณ , cut_wire ๋ถ๋ถ์์ ์๋ฅผ ์ ์ ์ ๊ณ ๋ฆ ๋๋ค.
2์ฐจ์ ๋ฐฐ์ด์ ๋ด๋ถ๊น์ง ๊น์ ๋ณต์ฌ๋ฅผ ์งํํ๊ธฐ ์ํด์ deepcopy๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋ฅธ ์ดํ์, cuta์ cutb๋ ๊ฐ๊ฐ bfs์ ์ฒซ ์์์ง์ ์ด ๋ ์ ์์ผ๋ฏ๋ก ์ด ์ ์ ์ ์ํฉ๋๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก (level3, python) (1) | 2023.04.11 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋์คํฌ ์ปจํธ๋กค๋ฌ (level3, python) (0) | 2023.04.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ (level2, python) (0) | 2023.04.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ (level2, python) (0) | 2022.10.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋๋์ง (level4, python) (0) | 2022.10.14 |