본문 바로가기

C언어

2025년 1학기 C언어 4주차

def solution(n, wires):
    from collections import deque #자료구조를 불러옴

    def bfs(start, graph, visit): #넓이우선 탐색을 한다
        queue = deque([start])
        visit[start] = True
        count = 1  # 시작 노드 포함
        while queue:
            node = queue.popleft() #popleft로 맨 앞을 제거하며 반환한다
            for n in graph[node]:
                if not visit[n]:
                    visit[n] = True
                    queue.append(n)
                    count += 1
        return count

    min_diff = n  # 초기값은 최대값으로 설정

    for cut in wires:
        # 그래프 초기화하기
        graph = [[] for _ in range(n + 1)] #노드 번호를 1부터 n까지 
        
        # 하나를 끊음
        for wire in wires:
            if wire == cut:
                continue
            a, b = wire
            graph[a].append(b)
            graph[b].append(a)
        
        # 두 송전탑 그룹의 크기 구하기
        visit = [False] * (n + 1)
        count = bfs(1, graph, visit)  # 랜덤으로 탐색 시작
        diff = abs(n - count - count)  # 차이를 계산한다 
        min_diff = min(min_diff, diff)  # 최소값을 업데이트 한다

    return min_diff

'C언어' 카테고리의 다른 글

2025년 C언어 5주차(추가) 1학기  (0) 2025.04.11
2025년 1학기 C언어 3주차  (0) 2025.03.30
2025년 1학기 2주차 C언어  (0) 2025.03.23
2025년 1학기 C언어 1주차  (0) 2025.03.16
겨울 C언어 4주차  (0) 2025.02.01