Gio_J
Gio's dev archive
Gio_J
전체 방문자
오늘
어제
  • 분류 전체보기 (20)
    • PS (10)
      • BOJ (8)
      • Programmers (2)
    • CS (0)
      • Operating System (0)
      • Network (0)
      • Data Base (0)
    • Data Structure (0)
    • Algorithm (0)
    • JavaScript (9)
      • DeepDive (9)
    • React (0)
    • Tools (1)

블로그 메뉴

  • 홈
  • GitHub
  • solved
  • 태그
  • 방명록

공지사항

인기 글

태그

  • DeepDive
  • javascript
  • JS
  • boj
  • programmers
  • c++
  • PS
  • vscode
  • Visual Studio Code

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Gio_J

Gio's dev archive

PS/Programmers

[programmers] 네트워크 level3 with JavaScript

2022. 6. 30. 21:41

JavaScript를 이용한 programmers level3 네트워크를 풀이한 글입니다.

문제 설명

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다.
예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고,
컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다.
따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다.

컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때,
네트워크의 개수를 return 하도록 solution 함수를 작성하시오.

제한사항

  • 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다.
  • 각 컴퓨터는 0부터 n-1인 정수로 표현합니다.
  • i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[i][j]를 1로 표현합니다.
  • computer[i][i]는 항상 1입니다.

입출력 예

n computers return
3 [[1, 1, 0], [1, 1, 0], [0, 0, 1]] 2
3 [[1, 1, 0], [1, 1, 1], [0, 1, 1]] 1

입출력 예 설명

예제 #1
아래와 같이 2개의 네트워크가 있습니다.

예제 #2
아래와 같이 1개의 네트워크가 있습니다.

풀이

이 문제는 DFS(깊이 우선 탐색) BFS(너비 우선 탐색)에 대해 알고 있다면 쉽게 접근할 수 있습니다.
그래프에서 DFS, BFS를 활용하면 한 정점에서 연결되어 있는 모든 정점들을 탐색할 수 있습니다.
저의 경우 DFS를 활용하여 해당 문제를 풀이하였습니다.
각각의 개별 네트워크들은 네트워크 내부에는 모두 연결되어 있고 외부 네트워크와는 끊어져 있으므로,
1 ~ n 각 정점마다 DFS를 진행하고 DFS가 한번 진행될 때마다, 네트워크의 개수를 카운트 해줍니다.
주의 할 것은 이미 방문한 정점인 경우에는 DFS를 진행하지 않는다는 것입니다.

구현

function solution(n, computers) {
  let answer = 0;
  const visited = Array(n).fill(false);
  const DFS = (node) => {
    visited[node] = true;

    for (let i = 0; i < n; i++) {
      const nextNode = i;
      if (computers[node][nextNode] === 0) continue;
      if (visited[nextNode]) continue;
      DFS(nextNode);
    }
  };

  for (let i = 0; i < n; i++) {
    if (!visited[i]) {
      DFS(i);
      answer++;
    }
  }
  return answer;
}

https://github.com/jgjung9/algorithm-test-practice

'PS > Programmers' 카테고리의 다른 글

[programmers] 가장 먼 노드 level3 with JavaScript  (0) 2022.06.30
    'PS/Programmers' 카테고리의 다른 글
    • [programmers] 가장 먼 노드 level3 with JavaScript
    Gio_J
    Gio_J
    dev archive

    티스토리툴바