const n = 6;
const edge = [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]];
const connects = new Array(n).fill().map(_ => []);
// n이 3일 경우, [[],[],[]] 이렇게 반환됨!
for (const e of edge) {
connects[e[0]-1].push(e[1]-1);
connects[e[1]-1].push(e[0]-1);
}
1) 필요한 변수
const visited = [1]; // 1. depth를 누적하기 위함
const queue = [0]; // 2. 방문해야 되는 노드들을 저장해놓은 용도
// ex) 0번째 노드와 연결된 노드들을 queue 안에 다 떄려넣음!
2) 반복문
while(queue.length) {
const cur = queue.shilt();
for (let next of connects[cur]) {
if (!visited[next]) {
visited[next] = visited[cur] + 1;
queue.push(next);
}
}
}
const max = Math.max(...visited);
const length = visited.filter(el => el === max).length;
// visited 배열에서 filter로 최댓값인 애를 찾고, 그 길이를 반한!