본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다
자바스크립트 코드
// Queue 구현
class Queue {
constructor() {
this.queue = [];
this.front = 0;
this.rear = 0;
}
enqueue(value) {
this.queue[this.rear++] = value;
}
dequeue() {
const value = this.queue[this.front];
delete this.queue[this.front];
this.front += 1;
return value;
}
isEmpty(){
return this.rear === this.front;
}
}
function solution(n, edge) {
// 트리 만들기
const tree = [[]];
edge.forEach(vertex => {
tree[vertex[0]] = tree[vertex[0]]? [...tree[vertex[0]], vertex[1]] : [vertex[1]];
tree[vertex[1]] = tree[vertex[1]]? [...tree[vertex[1]], vertex[0]] : [vertex[0]];
});
// 거리를 기록할 배열
const distances = new Array(n + 1).fill(0);
distances[1] = 1;
// 최대 거리
let maxDistnace = 0;
const queue = new Queue();
queue.enqueue(1);
while (!queue.isEmpty()) {
const currentNode = queue.dequeue();
// tree의 경로를 탐색
for (const node of tree[currentNode]){
if (distances[node] === 0) {
queue.enqueue(node);
distances[node] += distances[currentNode] + 1;
if (maxDistnace < distances[node]) maxDistnace = distances[node];
}
}
}
return distances.filter( e => e === maxDistnace).length;
}
Reference
'programming study > Algorithm' 카테고리의 다른 글
[프로그래머스] 코딩테스트 입문 - JavaScript 풀이 (0) | 2022.10.06 |
---|---|
자료구조와 알고리즘 - 재귀 함수 (0) | 2022.10.03 |
자료구조와 알고리즘 - 그리디 (0) | 2022.10.01 |
자료구조와 알고리즘 - BFS, DFS (0) | 2022.10.01 |
[프로그래머스] 입국심사 - JavaScript 풀이 (0) | 2022.09.28 |