โถ ๋ฌธ์ : https://www.acmicpc.net/problem/2606
โถ ์ฝ๋:
let input = require('fs').readFileSync(`BaekJoon/testcase.txt`).toString().split('\n');
function BFS (graph, start, num){
const visited = Array(num).fill(false);
const q = [];
let count = 0;
const firstN = graph[0];
visited[0] = true;
q.push(...firstN);
while(q.length !== 0){
const num = q.shift();
if(visited[num]){
continue;
}
visited[num] = true;
const neighbors = graph[num];
q.push(...neighbors);
count += 1;
}
return count;
}
let [comsNum, edgeNum, ...edges] = input;
comsNum = Number(comsNum);
edgeNum = Number(edgeNum);
const graph = Array.from(Array(comsNum).fill([]));
for (let i = 0; i < edgeNum; i++){
let [x, y] = edges[i].split(' ').map(num => Number(num));
graph[x-1] = [...graph[x-1], y-1];
graph[y-1] = [...graph[y-1], x-1];
}
const answer = BFS(graph, 0, comsNum);
console.log(answer);
โถ ๋ฌธ์ ํ์ด :
1. ์ปดํจํฐ ์์ ์ ๋ณด์ ๊ฐ์ ์ ์ ๋ณด๋ฅผ ์ด์ฉํด ์ธ์ ํ๋ ฌ๋ก ๊ทธ๋ํ๋ฅผ ๊ตฌํํ๋ค BFSํจ์์ ์ธ์๋ก graph๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ ์ ํํ์๋ค.
2. BFS ํจ์๋ ๋ฐฐ์ด์ Queue(ํ) ์๋ฃ๊ตฌ์กฐ์ ๊ฐ์ด ์ฌ์ฉํ๋ฉฐ ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด์๋ ๊ทธ๋ํ ์ ๋ณด์ ๋ฐฉ๋ฌธํ๋์ง์ visited์ ๋ํ ์ ๋ณด๋ฅผ ์ด์ฉํด ๊ทธ๋ํ๋ฅผ ํ์ํ๊ณ , ์ด๊ธฐ ์์์ธ 0๋ฒ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๊น์ง ์ด ๋ช๊ฐ์ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด ์๋์ง count์ ์ ์ฅํ๋ค.(์ด๋ ์์์ ์ธ 0๋ฒ ๋ ธ๋์ ์๋ ์ ์ธ)
3. BFS ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ฃผ๋ฉด ๋์~
'๐ฏ CodingTest > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] 17219๋ฒ ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2022.06.03 |
---|---|
[BaekJoon] 11724๋ฒ ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2022.06.03 |
[BaekJoon] 2579๋ฒ ๊ณ๋จ ์ค๋ฅด๊ธฐ (0) | 2022.06.02 |
[Baekjoon] 1764 ๋ฃ๋ณด์ก (0) | 2022.05.27 |
[Baekjoon] 1676 ํฉํ ๋ฆฌ์ผ 0์ ๊ฐ์ (0) | 2022.05.27 |