백준 24479 JS 풀이

hun2__2·2023년 7월 24일
0

코딩테스트

목록 보기
17/48

구하는 값

노드의 방문순서(인접 노드는 오름차순으로)

핵심 아이디어

인접리스트 만들고 sort 후 DFS

구현방법

  1. 인접리스트로 입력값 받고, sort로 오름차순정렬
  2. 방문처리할 visited 배열을 0으로 초기화
  3. DFS돌며 dep를 1씩 증가, 방문하지 않은 노드로 갈때 dep를 visited의 해당 idx에 대입

코드

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')

const [n, m, r] = input[0].split(" ").map(Number);
const graph = Array.from({ length: n + 1 }, () => []);

for (let i = 1; i <= m; i++) {
    const [a, b] = input[i].split(" ").map(Number);
    graph[a].push(b);
    graph[b].push(a);
}
// console.log(graph);
graph.forEach((line) => line.sort((a, b) => a - b));
// console.log(graph);

const visited = new Array(n + 1).fill(0);

let dep = 1;
function dfs(cur) {
    visited[cur] = true;
    visited[cur] = dep;

    for (const next of graph[cur]) {
        if (!visited[next]) {
            dep++;
            dfs(next);
        }
    }
}

dfs(r);

console.log(visited.slice(1).join("\n"));
profile
과정을 적는 곳

0개의 댓글