๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ „๋ ฅ๋ง์„ ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ (level2, python)

๊ฐœ๋ฐœ์ž HOON 2023. 4. 10. 14:47

 

 


 

๐Ÿค” ํ’€์ด ์ฝ”๋“œ

 

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์˜ ์ฒซ ์‹œ์ž‘์ง€์ ์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ์ ์„ ์œ ์˜ํ•ฉ๋‹ˆ๋‹ค.