ํฐ์คํ ๋ฆฌ ๋ทฐ
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ฅ ๋จผ ๋ ธ๋
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 2022. 8. 26. 19:01[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/49189
[ํ์ด]
๋ ธ๋ 1๋ถํฐ์ ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ชจ๋ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ BFS๋ฅผ ํ์ฉํ์์ต๋๋ค.
์ด๊ธฐ ์ธํ
- ์๋ฐฉํฅ ๊ทธ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ด์ฐจ์ ๋ฐฐ์ด graph์ ์ ๋ณด๋ฅผ ์ ์ฅํ์์ต๋๋ค.
- ๋ฐฉ๋ฌธํ ์ ์ ์ ์ ์ฅํ๋ visit๋ฐฐ์ด์ ์ ์ธํ๊ณ false๋ก ์ด๊ธฐํ ํด์ฃผ์์ต๋๋ค.
- ๋ ธ๋ 1๋ถํฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๋ dist ๋ฐฐ์ด์ ์ ์ธํ๊ณ 0์ผ๋ก ์ด๊ธฐํ ํด์ฃผ์์ต๋๋ค.
- ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ฉฐ ์ต๋ ๊ฑฐ๋ฆฌ max๋ฅผ ์ ์ฅํ๊ธฐ ์ํด max๋ฅผ ์ ์ธํฉ๋๋ค.
ํ๋ฅผ ํ์ฉํด ๊ทธ๋ํ๋ฅผ ํ์ํ์๋๋ฐ, queue์์ ์ ์ 1๊ฐ๋ฅผ shiftํ์ฌ ํด๋น ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ๋ค์ ํ์ํ๋ฉฐ ํ์ฌ ์ ์ ์ dist์ ๋ณด + 1์ ์ ์ฅํ์์ต๋๋ค. ๊ทธ๋ํ๋ฅผ ํ์ํ๋ ๊ณผ์ ์์ ์ต๋ ๊ฑฐ๋ฆฌ max๋ฅผ ๊ฐฑ์ ํด์ฃผ์์ต๋๋ค.
1์ ๋ฝ์์ 2, 3 ๋ฐฉ๋ฌธ ํ, dist[2] = 1, dist[3] = 1
2๋ฅผ ๋ฝ์์ 4, 5 ๋ฐฉ๋ฌธ ํ, dist[4] = 2, dist[5] = 2
3์ ๋ฝ์์ 6 ๋ฐฉ๋ฌธ ํ, dist[6] = 2
๋ฐ๋ผ์ ๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ๊ณ ๋ ํ dist๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
[ 0, 0, 1, 1, 2, 2, 2 ]
์ต๋ ๊ฑฐ๋ฆฌ๋ 2 ์ด๋ฏ๋ก filter์ฐ์ฐ์ ํตํด dist์์ 2์ ๊ฐ์๋ฅผ ๊ตฌํ๋ฉด answer์ 3์ด ๋ฉ๋๋ค.
[์ฝ๋]
function solution(n, edge) {
var answer = 0;
const graph = Array.from({length: n+1}, () => []);
edge.forEach((item) => {
graph[item[0]].push(item[1]);
graph[item[1]].push(item[0]);
});
const findDist = () => {
const dist = Array.from({length: n+1}, () => 0);
const visit = Array.from({length: n+1}, () => false);
let max = 0;
const queue = [];
visit[1] = true;
queue.push(1);
while(queue.length !== 0) {
const q = queue.shift();
for(let i=0;i<graph[q].length;i++) {
const node = graph[q][i];
if(visit[node]) {
continue;
}
dist[node] = dist[q] + 1;
visit[node] = true;
if(max < dist[node]) {
max = dist[node];
}
queue.push(node);
}
}
answer = dist.filter((d) => d === max).length;
}
findDist();
return answer;
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ์ ๊ตญ์ฌ์ฌ (0) | 2022.08.27 |
---|---|
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ์์ฅ (0) | 2022.08.26 |
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ํ๊ฒ ๋๋ฒ (0) | 2022.08.23 |
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (0) | 2022.08.18 |
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ๋ด์ค ํด๋ฌ์คํฐ๋ง (0) | 2022.08.11 |
- Total
- Today
- Yesterday
- http
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ๋ฐฑ์ค node.js
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์ค
- JavaScript
- ๋ฐฑ์ค javascript
- ํ๋กํ ์ฝ
- ์ด๋ถํ์
- ์ฝ๋ฉํ ์คํธ
- TDD
- ํ๋กํผํฐ
- Baekjoon
- ์ด์์ฒด์
- ์นด์นด์ค ์ธํด
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- git
- fp
- ๋คํธ์ํฌ
- ์ ์ญ ๋ณ์
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ๋ ์์ปฌ ํ๊ฒฝ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- map
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋์์ธ ํจํด
- ํฌํฌ์ธํฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |