[프로그래머스 Lv.2] 알고리즘 고득점 Kit 완전탐색 - 전력망을 둘로 나누기

김민지·2024년 4월 24일
0

✨ 정답 ✨

function solution(n, wires) {
    var answer = Number.MAX_SAFE_INTEGER;
    let tree = Array.from(Array(n+1),()=>[])
    wires.map((element)=>{
        let [a,b] = element;
        tree[a].push(b);
        tree[b].push(a);
    })
   
    function searchTree(root, exceptNum) {
        let count =0;
        let visit = [];
        let queue = [root];
        visit[root] = true;
        while(queue.length){
            let index = queue.pop();
            tree[index].forEach((element)=>{
                if(element !== exceptNum && visit[element]!==true){
                    visit[element] = true;
                    queue.push(element);
                }
            })
            count+=1;
        }
        
        return count;
    }

    wires.forEach(element => {
        let[a,b] = element;
        answer = Math.min(answer, Math.abs(searchTree(a,b)-searchTree(b,a)))
    });
    return answer;
}

🧵 참고한 정답지 🧵

💡💡 해설 💡💡

내 코드 설명
BFS로 특정 노드를 기준으로 연결된 노드를 방문한다. 전선 배열에서 한 요소를 선택해서 두 노드 중 하나를 exceptnum으로 지정해서 그 부분을 끊는다.

profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보