[백준 18352번] BFS(너비 우선 탐색) - 특정 거리의 도시 찾기

김민지·2023년 7월 26일
0

냅다 시작 백준

목록 보기
65/118

✨ 문제 ✨


✨ 정답 ✨

const fs = require('fs'); 
let input = fs.readFileSync("/dev/stdin").toString().trim();

input = input.split('\n');
const [N, M, K, X] = input.shift().split(' ').map((el) => +el)

graph = Array.from({ length: N + 1 }, () => new Array)

for (let i = 0; i < M; i++) {
    let [A, B] = input[i].split(' ').map((el) => +el)
    graph[A].push(B);
}
// N: 도시 개수, M: 도로 개수, K: 거리 정보, X: 출발 도시 번호
// 각 도시별 최단 거리 배열필요


const solution = (K, X) => {
    // 여기서는 각 도시별 최단 거리 배열을 찾고, 정렬해서 콘솔까지 출력해주기.
    let queue = [[X, 0]]
    let visited = new Array(N + 1).fill(false);
    visited[X]=true;
    let answerPart = [];
    while (queue.length > 0) {
        let [current, count] = queue.shift();
        let next = graph[current];
        for (let i = 0; i < next.length; i++) {
            if (visited[next[i]] === false) {
                if (count + 1 === K) {
                    answerPart.push(next[i]);
                } else {
                    queue.push([next[i], count + 1])
                }
                visited[next[i] ] = true;
                continue;
            }
        }
    }
    if (answerPart.length) {
        console.log(answerPart.sort((a, b) => a - b).join('\n'))
    } else {
        console.log(-1)
    }
}

solution(K, X)

🧵 참고한 정답지 🧵

💡💡 기억해야 할 점 💡💡

profile
이건 대체 어떻게 만든 거지?

0개의 댓글