포인트
const fs = require("fs");
const [n, k] = fs
.readFileSync("/dev/stdin")
.toString()
.trim()
.split(" ")
.map((v) => Number(v));
const move = [(v) => v * 2, (v) => v - 1, (v) => v + 1];
const queue = [];
const visits = Array(100000).fill(0);
function bfs(startVal) {
queue.push({ v: startVal, t: 0 });
visits[startVal] = 1;
while (queue.length) {
const { v, t } = queue.shift();
if (v === k) {
return t;
}
for (let i = 0; i < move.length; i++) {
const next = move[i](v);
if (next < 0 || next > 100000) continue;
if (visits[next]) continue;
visits[next] = 1;
if (i === 0) queue.unshift({ v: next, t });
else queue.push({ v: next, t: t + 1 });
}
}
}
console.log(bfs(n));