Pepperminttt
Pepperminttt's Dev
Pepperminttt
전체 방문자
오늘
어제
  • devInfo (86)
    • forBeingGoodDeveloper (2)
    • React (2)
      • LostArk Open API (1)
    • algorithm (58)
      • problems (44)
      • theory (14)
    • computerScience (8)
      • network (8)
    • javaScript (8)
    • Java (4)
    • web (2)
      • webApplication (2)
    • etc. (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Java
  • 알고리즘
  • greedy
  • 탐욕법
  • 벨만-포드
  • 탐욕법 문제
  • node.js
  • Network
  • DP문제
  • dfs문제
  • 백준
  • JavaScript
  • 프로그래머스
  • bfs문제
  • C++
  • solved.ac
  • dfs
  • 그래프
  • BFS
  • DP

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Pepperminttt

Pepperminttt's Dev

[프로그래머스 / Javascript] 전력망을 둘로 나누기
algorithm/problems

[프로그래머스 / Javascript] 전력망을 둘로 나누기

2023. 6. 1. 16:18

문제

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

 

프로그래머스

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

programmers.co.kr

 


문제 풀이

해당 문제는 송전탑의 연결 상태를 파악한 후 모든 전선을 한번씩 잘라보며 각 전원의 송전탑의 수의 차이를 구하는 문제이다.

 

문제를 풀 때 송전탑의 연결을 송전탑의 오브젝트에 넣어두어 연결 상태를 확보한 후 끊긴 이 후 송전탑의 수를 구했다.

 

글보다 코드를 보면 이해가 쉬울 것 같다.

function countLink (link,start) {
    let answer = 0;
    const queue = [start];
    const list = [start];
    
    while(queue.length){
        const target = queue.shift();
        link[target].forEach((x)=>{
            if(list.includes(x))    return;
            list.push(x);
            queue.push(x);
        })
    }
    return list.length;
}


function solution(n, wires) {
    var answer = n;
    const link = {};
    wires.forEach(([a,b])=>{
        if(link[a])     link[a].push(b);
        else            link[a] = [b];
        
        if(link[b])     link[b].push(a);
        else            link[b] = [a];
    })
    
    wires.forEach(([a,b])=>{
        const tempLink = {...link};
        tempLink[a] = tempLink[a].filter((x)=>x!==b);
        tempLink[b] = tempLink[b].filter((x)=>x!==a);
        
        const result = Math.abs(countLink(tempLink,a) - countLink(tempLink,b));
        if(answer > result) answer = result;        
    })
    return answer;
}

'algorithm > problems' 카테고리의 다른 글

[백준 / Java] 17626번 Four Squares  (0) 2023.07.23
[프로그래머스 / Javascript] 당구 연습  (1) 2023.06.16
[프로그래머스 / C++] 이모티콘 할인행사  (0) 2023.05.19
[프로그래머스 / C++] 롤케이크 자르기  (0) 2023.05.18
[프로그래머스 / C++] 모음 사전  (0) 2023.05.18
    'algorithm/problems' 카테고리의 다른 글
    • [백준 / Java] 17626번 Four Squares
    • [프로그래머스 / Javascript] 당구 연습
    • [프로그래머스 / C++] 이모티콘 할인행사
    • [프로그래머스 / C++] 롤케이크 자르기
    Pepperminttt
    Pepperminttt
    HTML, JavaScript, Python 등 Computer language TIL

    티스토리툴바