BFS를 이용하여, depth와 value를 obj객체에 넣어 저장해주자. 그런다음, depth가 가장 큰 객체속 배열의 length를 리턴해주자.
function solution(n, edge) {
var answer = 0;
let graph = {};
edge.forEach((data,idx)=>{
let [a,b] = data;
if(graph[a] === undefined) graph[a] = [b];
else graph[a] = [...graph[a], b];
if(graph[b] === undefined) graph[b] = [a];
else graph[b] = [...graph[b], a];
})
let queue = [1];
let visited = [];
let count = 0;
let obj ={};
while(queue.length){
let size = queue.length;
for(var i =0; i<size; i++){
let popped = queue.shift();
if(!visited.includes(popped)){
visited.push(popped);
queue.push(...graph[popped]);
if(obj[count] === undefined){
obj[count] = [popped]
}else{
obj[count] = [...obj[count], popped];
}
}
}
count++;
}
let max = Object.keys(obj).sort((a,b)=> b-a)[0];
return obj[max].length
}
예전부터 그래프만 보면, 약하다고 생각하고, 겁을 먹었다. 하지만 많은 그래프 문제를 풀어보고, 약간의 자신감이 생겨, 풀었더니, 정답이었다. 그래프 문제 유형은 비슷하게 나온다는 것을 잊지말고 명심해서 풀자!