π 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;
}