반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- javascript
- Nestjs
- TCP
- Algorithm
- typescript
- ip
- BFS
- 백준
- 타입 챌린지
- 소켓
- 레벨 1
- 크롤링
- dfs
- 프로그래머스
- 쉬운 문제
- 자바스크립트
- 그래프
- 문자열
- 타입스크립트
- socket
- 알고리즘
- HTTP
- type challenge
- 가천대
- Node.js
- dp
- 프로그래머스 레벨 2
- HTTP 완벽 가이드
- Crawling
- 수학
Archives
- Today
- Total
kakasoo
[node.js] 가장 먼 노드 ( 프로그래머스 레벨3 ) 본문
반응형
// 프로그래머스 레벨 3 가장 먼 노드를 풀었습니다.
const solution = (n, edge) => {
const map = new Array(n + 1).fill(0);
for (let i = 1; i < map.length; i++) {
map[i] = [];
}
edge.forEach((el) => {
const [from, to] = el;
map[from].push(to);
map[to].push(from);
});
const visited = new Array(n + 1).fill(0);
visited[0] = -1;
const bfs = (start) => {
const queue = [start];
visited[start] = 1;
while (queue.length) {
const cur = queue.shift();
for (let i = 0; i < map[cur].length; i++) {
const next = map[cur][i];
if (!visited[next] || visited[next] > visited[cur] + 1) {
queue.push(next);
visited[next] = visited[cur] + 1;
}
}
}
};
bfs(1);
const maxValue = Math.max(...visited);
return visited.filter((el) => el === maxValue).length;
};
그래프 문제는 항상 비슷한 코드로 작성되기 때문에 사실 레벨3이라기엔 쉽다.
어떤 모양의 맵을 만들고, bfs인지 dfs인지 결정하고,
visited를 어떻게 체크할 것인지,
전체 배열에 대해서 진행할 것인지, 아니면 특정한 점에서만 시작을 할 것인지 ( 이 문제는 1번 노드에서 출발했다. )
이러한 부분들만 결정해주면 된다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 캐시 ( 프로그래머스 레벨2 ) (4) | 2021.07.05 |
---|---|
[node.js] 점프와 순간 이동 ( 프로그래머스 레벨2 ) (0) | 2021.07.05 |
[node.js] 방문 길이 ( 프로그래머스 레벨2 ) (0) | 2021.07.02 |
[node.js] 괄호 회전하기 ( 프로그래머스 레벨2 ) (0) | 2021.07.01 |
[node.js] 쿼드 압축 후 개수 세기 ( 프로그래머스 레벨2 ) (0) | 2021.07.01 |