๐ Algorithm
[์ฝ๋ฉ ํ ์คํธ ํฉ๊ฒฉ์ ๋๊ธฐ ๋ฌธ์ 39] ๋๋น ์ฐ์ ํ์ ์ํ
s2ylvia
2024. 9. 26. 00:36
๋ฌธ์ ์ค๋ช
๋๋น ์ฐ์ ํ์์ผ๋ก ๋ชจ๋ ๊ทธ๋ํ์ ๋ ธ๋๋ฅผ ์ํํ๋ ํจ์ solution()์ ์์ฑํ์ธ์. ์์ ๋ ธ๋๋ start๋ก ์ฃผ์ด์ง๋๋ค. graph๋ [์ถ๋ฐ ๋ ธ๋, ๋์ฐฉ ๋ ธ๋] ์๋ค์ด ๋ค์ด ์๋ ๋ฐฐ์ด์ ๋๋ค. ๋ฐํ๊ฐ์ ๊ทธ๋ํ์ ์์ ๋ ธ๋๋ถํฐ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋๋น ์ฐ์ ํ์์ผ๋ก ์งํํ ์์๋๋ก ๋ ธ๋๊ฐ ์ ์ฅ๋ ๋ฐฐ์ด์ ๋๋ค.
์ ์ฝ ์กฐ๊ฑด
- ๋ ธ๋์ ์ต๋ ๊ฐ์๋ 100๊ฐ๋ฅผ ๋์ง ์์ต๋๋ค.
- ์์ ๋ ธ๋๋ถํฐ ์์ํด์ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ๋ก๊ฐ ํญ์ ์์ต๋๋ค.
- ๊ทธ๋ํ์ ๋ ธ๋๋ ์ซ์์ ๋๋ค.
์ ์ถ๋ ฅ์ ์
graph | start | return |
[(1,2),(1,3),(2,4),(2,5),(3,6),(3,7),(4,8),(5,8),(6,9),(7,9)] | 1 | [1,2,3,4,5,6,7,8,9] |
[(0,1),(1,2),(2,3),(3,4),(4,5),(5,0)] | 1 | [1,2,3,4,5,0] |
์ ๋ต
function solution(graph, start) {
//๊ทธ๋ํ๋ฅผ ์ธ์ ๋ฆฌ์คํธ๋ก
const adjList = {};
for(const [start,end] of graph){
if(!adjList[start]) adjList[start] = [];
adjList[start].push(end);
}
const visited = new Set(); //๋ฐฉ๋ฌธ ์ฌ๋ถ ์ฒ๋ฆฌ
const queue = []; //ํ๋ก bfs๋ฅผ ๋๋ฆด๊ฑฐ์
queue.push(start);
visited.add(start); //์์ ๋
ธ๋๋ฅผ ๋ฐ๋ก ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
const result = [start]; //๋ฐ๋ก ์์๋
ธ๋ ๊ฒฐ๊ณผ๋ฐฐ์ด์ ํธ์ฌ
//ํ ๋น๋๊น์ง ๋๋ฆฐ๋ค
while(queue.length > 0){
const node = queue.shift(); //ํํด์ ์ธ๊ทผ ๋
ธ๋๋ฅผ ์ฐพ์๊ฑฐ์
for(let neighbor of adjList[node] || []){
if(!visited.has(neighbor)){
//๋ฐฉ๋ฌธํ์ง์์์ ๊ฒฝ์ฐ ํ์
queue.push(neighbor);
visited.add(neighbor);
result.push(neighbor);
}
}
}
return result;
}