일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 코딩테스트
- 정렬
- 백준
- node.js
- js
- 이것이 코딩테스트다 with 파이썬
- 자바
- 연습문제
- programmers
- Typescript
- Java
- Baekjoon
- Lv1
- bfs/dfs
- CSS
- 알고리즘
- 네트워크
- React
- Python
- 프로그래머스
- javascript
- Next.js
- 자바스크립트
- greedy
- 코딩테스트 입문
- SWEA
- 프로그래머스 JS
- CLASS
- 그리디
- Lv2
Archives
- Today
- Total
개발야옹
[Programmers] 그래프 level 3 - 가장 먼 노드 ( 다시 풀어보기 ) 본문
Algorithm\CodingTest/Programmers
[Programmers] 그래프 level 3 - 가장 먼 노드 ( 다시 풀어보기 )
kitez 2023. 3. 12. 16:19https://school.programmers.co.kr/learn/courses/30/lessons/49189
function solution(n, edge) {
const map = new Array(n+1).fill().map(i => []);
for(let i = 0 ; i < edge.length ; i++) {
const [e1, e2] = edge[i];
map[e1].push(e2);
map[e2].push(e1);
}
const visited = new Array(n+1).fill(0);
visited[0] = -1; // 사용하지 않는 index
const bfs = (start) => {
const queue = [start];
while(queue.length) {
console.log(queue);
const cur = queue.shift(); // 현재 node 위치
for(let i = 0 ; i < map[cur].length ; i++) {
// 현재 위치의 node에서 이동가능한 다음 node가 무엇이 있는지 순회
const next = map[cur][i];
// next가 방문한 적 없는 node이거나,
// visited[cur]+1 현재 노드까지 방문한 길이에 1 을 더한 것 보다 큰 경우
if(!visited[next] || visited[next] > visited[cur] + 1) {
queue.push(next);
visited[next] = visited[cur] + 1;
}
}
}
};
bfs(1);
// index 0 -> 사용 X
// index1 -> node 1임으로 제외
visited.shift();
visited.shift();
const maxValue = Math.max(...visited);
return visited.filter((el) => el === maxValue).length;
}
풀이나 접근을 참고하여 문제 해결
다음에 다시 풀어보기
728x90
'Algorithm\CodingTest > Programmers' 카테고리의 다른 글
[Programmers] 코딩테스트 입문 - 안전지대 (0) | 2023.03.17 |
---|---|
[Programmers] 깊이/너비 우선 탐색(DFS/BFS) lv2 - 게임 맵 최단거리 (0) | 2023.03.17 |
[Programmers] 연습문제 - 피보나치 수 (0) | 2023.03.08 |
[Programmers] 연습문제 - 숫자의 표현 (0) | 2023.03.08 |
[Programmers] 월간 코드 챌린지 시즌1 - 이진 변환 반복하기 (0) | 2023.03.01 |