๐ ๋ฌธ์
n๊ฐ์ ๋ ธ๋๊ฐ ์๋ ๊ทธ๋ํ๊ฐ ์์ต๋๋ค. ๊ฐ ๋ ธ๋๋ 1๋ถํฐ n๊น์ง ๋ฒํธ๊ฐ ์ ํ์์ต๋๋ค. 1๋ฒ ๋ ธ๋์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ ์ต๋จ๊ฒฝ๋ก๋ก ์ด๋ํ์ ๋ ๊ฐ์ ์ ๊ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ๋ ธ๋๋ค์ ์๋ฏธํฉ๋๋ค.
๋ ธ๋์ ๊ฐ์ n, ๊ฐ์ ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด vertex๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, 1๋ฒ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- ๋ ธ๋์ ๊ฐ์ n์ 2 ์ด์ 20,000 ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ฉฐ ์ด 1๊ฐ ์ด์ 50,000๊ฐ ์ดํ์ ๊ฐ์ ์ด ์์ต๋๋ค.
- vertex ๋ฐฐ์ด ๊ฐ ํ [a, b]๋ a๋ฒ ๋ ธ๋์ b๋ฒ ๋ ธ๋ ์ฌ์ด์ ๊ฐ์ ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
์ ์ถ๋ ฅ ์
6 | [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] | 3 |
โ๏ธ ํ์ด
์ต๊ทผ์ ํ์์๋ ํ๋ก๊ทธ๋๋จธ์ค์ ๋ถ๋๋ณต๊ท์ ๋น์ทํ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค. ๊ฐ์ฅ ๋จผ ๋ ธ๋๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด BFS๋ฅผ ๋๋ ธ๋๋ฐ ๋จผ์ graphํ ์ํค๋ ๊ฒ์ด ํ์ํ๋ค. ๊ฐ์ฒด์ key๋ฅผ node๋ก, value๋ฅผ ๊ฐ ์ ์๋ node๋ก ๋ง๋ค์ด์คฌ๋ค. ๋ค์ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด check ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๊ณ ๊ฐ์ฅ ๋จผ ๋ ธ๋์ ๊ฐ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ ธ๋์์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๋ distArr ๋ฐฐ์ด, ๊ฐ์ฅ ๋จผ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๋ maxDist ๋ณ์๋ฅผ ์ ์ธํ๊ณ BFS๋ฅผ ๋๋ฉด์ ๊ฐ์ ์ ์ฅํ๊ณ maxDist๋ฅผ ๊ฐฑ์ ์์ผฐ๋ค. BFS๊ฐ ๋๋๊ณ distArr ๋ฐฐ์ด์ ์ํํ๋ฉด์ maxDist์ ํ ๋น๋์ด ์๋ ๊ฐ๊ณผ ๋น๊ตํ๋ฉฐ answer๋ฅผ ๊ณ์ฐํ๋ค.
โจ๏ธ ์ฝ๋
function solution(n, edge) {
var answer = 0;
const graph = {};
for (const e of edge) {
const [start, end] = e;
if (graph[start]) graph[start].push(end);
else graph[start] = [end];
if (graph[end]) graph[end].push(start);
else graph[end] = [start];
}
const queue = [1];
const distArr = new Array(n + 1).fill(0);
const check = new Array(n + 1).fill(0);
let dist = 1;
let maxDist = 1;
check[1] = 1;
while (queue.length) {
const len = queue.length;
for (let i = 0; i < len; i++) {
const node = queue.shift();
if (!graph[node]) continue;
for (const nextNode of graph[node]) {
if (check[nextNode]) continue;
distArr[nextNode] = dist;
maxDist = maxDist < dist ? dist : maxDist;
check[nextNode] = 1;
queue.push(nextNode);
}
}
dist++;
}
for (const dist of distArr) {
if (dist === maxDist) answer += 1;
}
return answer;
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ๋์คํฌ ์ปจํธ๋กค๋ฌ (1) | 2023.03.06 |
---|---|
[Algorithm] ์ฌ ์ฐ๊ฒฐํ๊ธฐ (0) | 2023.03.05 |
[Algorithm] ์คํฐ์ปค ๋ชจ์ผ๊ธฐ2 (0) | 2023.03.03 |
[Algorithm] ๋ถ๋๋ณต๊ท (0) | 2023.03.02 |
[Algorithm] ์ต๊ณ ์ ์งํฉ (0) | 2023.03.01 |