백준 21937 JS 풀이

hun2__2·2023년 8월 3일
0

코딩테스트

목록 보기
26/48

구하는 값

x문제를 풀기 위해 이전에 풀어야 하는 문제 수

핵심 아이디어

이전에 풀어야하는 문제를 거꾸로 graph에 넣어서 dfs를 돌며 ans++를 해줌

(제발.. 문제를 잘 읽자…)

코드

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

const [n, m] = 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[b].push(a);
}
const x = Number(input[m + 1]);
// console.log(graph);
// console.log(x);

const visited = new Array(n + 1).fill(false);
let ans = 0;
const dfs = (cur) => {
    visited[cur] = true;
    for (const prev of graph[cur]) {
        if (!visited[prev]) {
            ans++;
            dfs(prev);
        }
    }
};

dfs(x);
// console.log(visited);
console.log(ans);
profile
과정을 적는 곳

0개의 댓글