- 발행일
99클럽 코테 스터디 8일차 TIL + 오늘의 학습 키워드: 깊이/너비 우선 탐색(DFS/BFS)
99클럽 코테 스터디 8일차 TIL + 오늘의 학습 키워드: 깊이/너비 우선 탐색(DFS/BFS)
이 글은 네이버 블로그에 2025년 3월 7일에 올렸던 것을 그대로 옮겨온 것입니다.
오늘의 회고
어떤 문제가 있었고, 나는 어떤 시도를 했는지
어떻게 해결했는지
무엇을 새롭게 알았는지
내일 학습할 것은 무엇인지
let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const n = Number(input.shift()); // 전체 사람 수
const [a, b] = input.shift().split(' ').map(Number); // a, b 두 사람의 번호
const m = Number(input.shift()); // 관계의 개수
const arr = input.map((v) => v.split(' ').map(Number)); // 부모-자식 관계 배열
let answer, degree = 0;
let visited = Array(n + 1).fill(false);
let graph = [...Array(n + 1)].map(() => []);
// 양방향 그래프 만들기
arr.map(([from, to]) => {
graph[from].push(to);
graph[to].push(from);
});
// DFS
const dfs = (start, depth) => {
// start가 b에 도달하면 depth answer에 저장
if (start === b) answer = depth;
// 현재 노드 방문처리 안 되어있다면 방문 처리하고 dfs실행하는데 depth는 1씩 증가
for (const v of graph[start]) {
if (!visited[v]) {
visited[v] = true;
dfs(v, depth + 1);
}
}
};
dfs(a, degree);
answer ? console.log(answer) : console.log(-1);
필수 해시태그: #99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL
