โถ ๋ฌธ์ : https://www.acmicpc.net/problem/1389
1389๋ฒ: ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น
์ฒซ์งธ ์ค์ ์ ์ ์ ์ N (2 ≤ N ≤ 100)๊ณผ ์น๊ตฌ ๊ด๊ณ์ ์ M (1 ≤ M ≤ 5,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ์น๊ตฌ ๊ด๊ณ๊ฐ ์ฃผ์ด์ง๋ค. ์น๊ตฌ ๊ด๊ณ๋ A์ B๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, A์ B๊ฐ ์น๊ตฌ๋ผ๋ ๋ป
www.acmicpc.net
โถ ์ฝ๋ :
let input = require('fs').readFileSync(`Computer Science/Alogrithms/๋ฐฑ์คJS/testCase.txt`).toString().split('\n');
const [n, m] = input[0].split(' ').map(num => parseInt(num))
let kevin = Infinity;
let answer = 0;
let graph = Array.from(new Array(n+1).fill(new Array()));
for (let i = 1; i<= m; i++){
const [node1,node2] = input[i].split(' ').map(num => parseInt(num));
graph[node1] = [...graph[node1], node2];
graph[node2] = [...graph[node2], node1];
}
for (let i = 1; i<= n; i++){
let temp = BFS(graph, i, n);
if(kevin > temp){
kevin = temp;
answer = i;
}
}
console.log(answer);
function BFS(graph,startNum, n){
let kevinNum = 0;
let q = [[startNum,0]];
let visited = Array(n+1).fill(false);
while (q.length != 0){
let [v, count] = q.shift();
if(visited[v] === false){
graph[v].map(num => {q.push([num, count+1])});
visited[v] = true;
kevinNum += count;
}
}
return kevinNum;
}
โถ ๋ฌธ์ ํ์ด :
1. ๊ทธ๋ํ ํ์์ ์ด์ฉํด์ผ ํ๋ค๋ ์ ์ ์ผ๋ํ์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๋ ธ๋๋ ์๋ฐฉํฅ ์ฐ๊ฒฐ๋์ด์๋ค.
2. ์ด๊ธฐ ์๋ฐฉํฅ ์ฐ๊ฒฐ์ ์ํด for๋ฌธ์ผ๋ก ์ ๋ ฅ์ ์ฒ๋ฆฌํ์ฌ ๊ทธ๋ํ๋ฅผ ์์ฑํ์๋ค.
3. function BFS๋ฅผ ์ ์ธํ์๋ค.
3-1. ์ธ์๋ก๋ graph, startNum, n(์ฌ๋์ ์) ๋ฅผ ์ ๋ ฅ ๋ฐ๋๋ค.
3-2. BFS๋ startNum์์๋ถํฐ ๊ฐ๊ฐ์ ์ฌ๋๋ค์ ๋ชจ๋ ๋ง๋๊ธฐ๊น์ง ๋ฐ๋ณตํ๋ค.
3-3. ๋ ธ๋๋ฅผ ํ์ํ๋ฉฐ queue์ ํด๋น ๋ ธ๋์ ๋ฒํธ์ ํด๋น ๋ ธ๋๊น์ง์ count๋ฅผ ์ ์ฅํ๋ฉฐ, ๊ฐ๊ฐ์ ๋ ธ๋๋ฅผ ์ฒ์ ๋ฐฉ๋ฌธํ ๋๋ง๋ค kevinNum์ ๋ํด์ค๋ค. => BFS๋ ๋ฃจํธ ๋ ธ๋๋ก๋ถํฐ ํ์ ๋ ธ๋๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์๊ธฐ ๋๋ฌธ์ count๋ฅผ ๋น๊ตํ ๋ก์ง์ ๋ณ๋๋ก ํ์๊ฐ ์๋ค.
4. BFS ํจ์๋ฅผ ์ด์ฉํด ์ฃผ์ด์ง ์ฌ๋์ ์ ๋งํผ(์ด๋ ์ฌ๋์ ๋ฒํธ๋ 1๋ถํฐ ์์) ๋ฐ๋ณตํ๋ฉฐ ๊ฐ์ฅ ์์ ๊ฐ์ ์ผ๋น ๋ฒ ์ด์ปจ ์๋ฅผ ๊ฐ์ง ์ฌ๋์ ๋ฒํธ๋ฅผ answer์ ์ ์ฅํ๋ค.
5. ์ดํ answer๋ฅผ ์ถ๋ ฅํ๋ฉด ๋์!
'๐ฏ CodingTest > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1764 ๋ฃ๋ณด์ก (0) | 2022.05.27 |
---|---|
[Baekjoon] 1676 ํฉํ ๋ฆฌ์ผ 0์ ๊ฐ์ (0) | 2022.05.27 |
[BaekJoon] 1620 ๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์ (0) | 2022.04.15 |
[BaekJoon] 1541 ์์ด๋ฒ๋ฆฐ ๊ดํธ (0) | 2022.04.15 |
[BaekJoon] 1463 1๋ก ๋ง๋ค๊ธฐ (0) | 2022.04.14 |