반응형
문제
코딩테스트 연습 - 가장 먼 노드
6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3
programmers.co.kr
나의 풀이
(javascript) 프로그래머스 가장 먼 노드
프로그래머스 level3 그래프 - 가장 먼 노드 javascript를 이용한 문제풀이 입니다.
velog.io
처음에 node의 방향성을 생각하다 못풀었다.
너무 어렵게 생각하지 말고, node 단위로 생각하면 쉽게 접근이 가능할 것 같다.
function solution(n, edge) {
let visited = new Array(n+1).fill(0)
let level = new Array(n+1).fill(0)
let queue = [];
queue.push(1)
visited[1] = 1;
while(queue.length){
let target = queue.shift();
let lev = level[target] +1
edge.forEach((el)=>{
if(el[0] === target && visited[el[1]] !== 1){
visited[el[1]] = 1
queue.push(el[1])
level[el[1]] = lev
return
}
if(el[1] === target && visited[el[0]] !== 1){
visited[el[0]] = 1
queue.push(el[0])
level[el[0]] = lev
}
})
}
let MAX = Math.max(...level)
return level.filter(el=>el===MAX).length
}
풀이
bfs 방식을 기반으로 풀이를 하였다.
Array를n+1개를 선언한 것은 queue에 넣다 뺴는 과정에서 인덱스 값을 편하게 쓰기 위한 것이다.
visited 가 방문여부, level이 몇번 이동해서 이 node에 도착했는가, 즉 거리이다.
이 문제는 edge의 [5,2] 배열이 [2,5]와 같은 의미가 되므로 순서만 바꿔서 if문을 2번 적용헤야된다.
또한, 자료를 찾다보니, 다익스트라 알고리즘 얘기를 봐서 이 개념도 함께 보면 좋을 것 같다.
23. 다익스트라(Dijkstra) 알고리즘
다익스트라(Dijkstra) 알고리즘은 다이나믹 프로그래밍을 활용한 대표적인 최단 경로(Shortest Path) 탐...
blog.naver.com
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] level1. 최소직사각형 (javascript) (2) | 2021.12.14 |
---|---|
[프로그래머스] level3. 순위 (javascript) (0) | 2021.12.07 |
[프로그래머스] level3. 디스크 컨트롤러 (javascript) (0) | 2021.11.07 |
[프로그래머스] level1. 위클리 챌린지 2주차 (javascript) (0) | 2021.09.02 |
[프로그래머스] level2. 큰 수 만들기 (javascript) (0) | 2021.09.01 |