ν°μ€ν 리 λ·°
λ¬Έμ
νμλ μ‘μμ§λ₯Ό μμ΄λ²λ Έλ€. λ€νν μ‘μμ§μλ μμΉμΆμ κΈ°κ° λ¬λ € μλ€.
νμμ μμΉμ μ‘μμ§μ μμΉκ° μμ§μ μμ μ’ν μ μΌλ‘μ£Όμ΄μ§λ©΄ νμλ νμ¬ μμΉμμ μ‘μμ§μ μμΉκΉμ§ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ μ΄λνλ€.
μ‘μμ§λ μμ§μ΄μ§ μκ³ μ μ리μ μλ€. νμλ μ€μΉ΄μ΄ 콩콩μ νκ³ κ°λλ° ν λ²μ μ νλ‘ μμΌλ‘ 1, λ€λ‘ 1, μμΌλ‘ 5λ₯Ό μ΄λν μ μλ€. μ΅μ λͺλ²μ μ νλ‘ νμκ° μ‘μμ§μ μμΉκΉμ§ κ° μ μλμ§ κ΅¬νλ νλ‘κ·Έλ¨μ μμ±νμΈμ.
λ¬Έμ νμ΄
μ΄λ μ€μν μ μ νλ² λ°©λ¬Ένλ μ§μ μ λ μ΄μ μ°Έμ‘° λ° μννμ§ μμμΌλ‘μ¨ μκ° λ³΅μ‘λλ₯Ό μ€μ΄λ κ²μ΄λ€.
μ΅λ¨ κ²½λ‘λ₯Ό ꡬνκΈ° μν΄μλ λ€μκ³Ό κ°μ΄ κ° μ§μ μ λν 거리λ₯Ό 거리μ μ 보λ₯Ό μ μ₯νκ³ μλ λ°°μ΄μ μ μ₯νμλ€.
μ½λ
function solution(s, e) {
let answer = 0;
let queue = [];
let ch = Array.from({length: 10001}, () => 0);
let dis = Array.from({length: 10001}, () => 0);
queue.push(s);
ch[s] = 1; //μ§μ μ μ€λ³΅μ λ°©μ§
dis[s] = 0; //μΆλ° μ§μ μ 거리λ₯Ό 0μΌλ‘ μ΄κΈ°ν
while(queue.length) {
let v = queue.shift();
for(let nv of [v + 1, v - 1, v + 5]) {
if(nv === e) return dis[v] + 1;
if(nv > 0 && nv <= 10000 && ch[nv] === 0) { //μ’ν μ μ λ²μλ₯Ό λ²μ΄λμ§ μμΌλ©΄μ ν λ²λ κ°μ§ μμμ΄μΌ ν¨
ch[nv] = 1;
queue.push(nv);
dis[nv] = dis[v] + 1; //λ€μ μ§μ μ 거리λ νμ¬ μ§μ μμμ 거리μ 1μ κ°μ°
}
}
}
}
console.log(solution(5, 14));
function solution(s, e) {
let answer = 0;
let queue = [];
let ch = Array.from({length: 10001}, () => 0);
queue.push(s);
ch[s] = 1;
let L = 0; //νΈλ¦¬μ λ 벨μ μ΄μ©
while(queue.length) {
let len = queue.length;
for(let i = 0; i < len; i++) { //λ 벨 λ΄μ ν΄λΉνλ λͺ¨λ μ§μ μ λͺ¨λ λκ³ λμμΌ λ€μ λ λ²¨λ‘ μ΄λν μ μλλ‘ μ€μ²© λ°λ³΅λ¬Έ μ¬μ©
let x = queue.shift();
for(let nx of [x + 1, x - 1, x + 5]){
if(nx === e) return L + 1;
if(nx > 0 && nx <= 10000 && ch[nx] === 0) {
ch[nx] = 1;
queue.push(nx);
}
}
}
L++; //λ 벨μ λͺ¨λ μνν λ€ λ€μ λ λ²¨λ‘ κ°κΈ° μ μ λ 벨 κ° κ°μ°
}
}
console.log(solution(5, 14));
'μκ³ λ¦¬μ¦ > νκ·Έ λ³ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λμ κ³νλ²]κ³λ¨μ€λ₯΄κΈ° (0) | 2021.08.15 |
---|---|
[DFS/BFS]μ¬λλΌ μμΌλλ (0) | 2021.08.14 |
[BFS]μ΄μ§νΈλ¦¬ λμ΄ μ°μ νμ (0) | 2021.08.13 |
[DFS]λ―Έλ‘ νμ (0) | 2021.08.11 |
[μΈμ 리μ€νΈ]κ²½λ‘ νμ (0) | 2021.08.11 |