서크호
서크호 - 개발 스토리
서크호
전체 방문자
오늘
어제
  • 분류 전체보기 (22)
    • TEAM 알고싶다 (17)
      • 성공 문제 (16)
      • 실패 문제 (1)
    • JavaScript (0)
    • TypeScript (0)
    • Node.js (2)
      • React.js (0)
      • Next.js (0)
      • NestJS (2)
    • Baekjoon (Node.Js) (1)
    • Error Box (1)
    • MySQL (1)
    • JAVA (0)
    • Andriod (0)
    • Spring Boot (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 10026
  • javascript
  • Nest mysql
  • 백준 적록색약
  • NestJs session
  • 적록색약 nodejs
  • NestJS ValidationPipe
  • nodejs
  • NestJs Strategy
  • Nestjs
  • Nest DB
  • 백준
  • 10026 node
  • NestJs PassPort
  • Nest Typeormm
  • NestJs login
  • 적록색약 javascript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
서크호

서크호 - 개발 스토리

TEAM 알고싶다/성공 문제

[Baekjoon (Node.js)] 11724번 연결 요소의 개수

2022. 7. 13. 00:53

📄 문제

문제 사진
입출력 예제


📝 나의 통과 풀이

let input = require("fs")
  .readFileSync("/dev/stdin") // /dev/stdin
  .toString()
  .trim()
  .split("\n");

const [N, M] = input[0].split(" ").map(Number);
const edge = input.slice(1).map((item) => item.split(" ").map(Number));

const seokhoGraph = new Map();

edge.forEach(([from, to]) => {
  if (seokhoGraph.has(from)) {
    seokhoGraph.get(from).push(to);
  } else {
    seokhoGraph.set(from, [to]);
  }
  if (seokhoGraph.has(to)) {
    seokhoGraph.get(to).push(from);
  } else {
    seokhoGraph.set(to, [from]);
  }
});

let count = 0;
let visited = [];
for (let i = 0; i < N + 1; i++) {
  visited[i] = 0;
}
function dfs(start) {
  visited[start] = 1;
  if (!seokhoGraph.has(start)) {
    return;
  }
  const nodes = [...seokhoGraph.get(start)];
  nodes.forEach((item) => {
    if (!visited[item]) {
      dfs(item);
    }
  });
}

for (let i = 1; i <= N; i++) {
  if (!visited[i]) {
    dfs(i);
    count++;
  }
}

console.log(count);

맞았습니다!


⌨ 접근법

1. 입력을 잘라서 [정점, 간선] 배열 [N, M] 을 만든다. (근데  M은 안썻다... 왜 이거 지금 봤지?)

2. new Map과 반복문을 사용해서 그래프를 만든다. (class를 쓰다가팀원 'BOB' 덕분에 Map의 세계도 와봤다.)

3. DFS 관련 변수 : (루프 카운트 : count, 방문 확인용 array : visited)

4. DFS를 돌리면 이어진 연결 요소 끼리 쭉 루프를 돌며 visited 에 체크된다.

5. 각 정점마다 모두 DFS에 넣어보면서 visited에 없는 순간(여러개의 연결 요소 그룹 중 새로운 그룹을 만나는 순간) count를 올려준다.

6. 출력을 찍어보면 끝


📚 문제 링크

https://www.acmicpc.net/problem/11724

 

11724번: 연결 요소의 개수

첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주

www.acmicpc.net


저작자표시 (새창열림)

'TEAM 알고싶다 > 성공 문제' 카테고리의 다른 글

[프로그래머스] JavaScript - 거리두기 확인하기  (0) 2022.07.27
[Baekjoon (Node.js)] 10026번 적록색약  (0) 2022.07.19
[Baekjoon (Node.js)] 24479번 알고리즘 수업 - 깊이 우선 탐색 1  (0) 2022.07.13
[Baekjoon (Node.js)] 2606번 바이러스  (0) 2022.07.05
[Baekjoon (Node.js)] 2164번 카드2  (0) 2022.06.22
    'TEAM 알고싶다/성공 문제' 카테고리의 다른 글
    • [프로그래머스] JavaScript - 거리두기 확인하기
    • [Baekjoon (Node.js)] 10026번 적록색약
    • [Baekjoon (Node.js)] 24479번 알고리즘 수업 - 깊이 우선 탐색 1
    • [Baekjoon (Node.js)] 2606번 바이러스
    서크호
    서크호
    팀 스터디 및 개인 개발 관련 블로그 입니다!

    티스토리툴바