본문 바로가기

카테고리 없음

[Programmers] 전력망을 둘로 나누기

https://school.programmers.co.kr/learn/courses/30/lessons/86971

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

from collections import deque

def bfs(start, visited, connected):
    queue = deque()
    queue.append(start)
    visited[0] = True
    cnt = 1
    while queue:
        node = queue.popleft()
        for w in connected[node]:
            if not visited[w]:
                visited[w] = True
                queue.append(w)
                cnt += 1
    return cnt

def solution(n, wires):
    answer = 1e9        
    for i in range(n-1):
        visited = [False]*n
        connected = [[] for _ in range(n)]
        for idx, wire in enumerate(wires):
            if idx == i:
                continue
            else: # 연결 정보 저장
                connected[wire[0]-1].append(wire[1]-1)
                connected[wire[1]-1].append(wire[0]-1)
        
        cnt = bfs(0, visited, connected)
        answer = min(answer, abs((n-cnt)-cnt))
                       
    return answer

아아 ..... 너무 어이없는 실수로 또 시간을 버렸다. 함수를 만들 때 매개변수에 0 숫자를 넣어줘서 .....

정신 똑바로 차리고 풀자.

코딩테스트에 아주 유사한 문제가 나왔었는데, 못풀었다. 이렇게 쉽게 풀리는걸 못풀다니 ........ 다음 번 코테들은 절대 안 떨어지리라......

문제좀 많이 풀자 매일매일 꾸준히 !