Algorithm
- μ¨λ°κΌμ§ -
λ¬Έμ
μλΉμ΄λ λμκ³Ό μ¨λ°κΌμ§μ νκ³ μλ€. μλΉμ΄λ νμ¬ μ N(0≤N≤100,000)μ μκ³ , λμμ μ K(0≤K≤100,000)μ μλ€. μλΉμ΄λ κ±·κ±°λ μκ°μ΄λμ ν μ μλ€. λ§μ½, μλΉμ΄μ μμΉκ° XμΌ λ κ±·λλ€λ©΄ 1μ΄ νμ X-1 λλ X+1λ‘ μ΄λνκ² λλ€. μκ°μ΄λμ νλ κ²½μ°μλ 1μ΄ νμ 2*Xμ μμΉλ‘ μ΄λνκ² λλ€.
μλΉμ΄μ λμμ μμΉκ° μ£Όμ΄μ‘μ λ, μλΉμ΄κ° λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ΄ λͺ μ΄ νμΈμ§ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ μΆλ ₯ μμ
λ¬Έμ νκΈ°
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input;
let queue = [];
let visited = [];
rl.on("line", function (line) {
input = line
.toString()
.split(" ")
.map((el) => Number(el));
}).on("close", function () {
visited = Array(100001).fill(false);
queue = [[input[0], 0]];
let index = 0;
while (true) {
if (!queue[index]) break;
let [location, count] = queue[index++];
if (visited[location]) continue;
visited[location] = true;
if (location === input[1]) {
console.log(count);
break;
}
if (location + 1 <= 100000) queue.push([location + 1, count + 1]);
if (location - 1 >= 0) queue.push([location - 1, count + 1]);
if (location * 2 <= 100000) queue.push([location * 2, count + 1]);
}
process.exit();
});
λ°μν
'κ°μΈκ³΅λΆ > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€][Node.js] 1748λ² : μ μ΄μ΄ μ°κΈ° 1 (0) | 2021.07.14 |
---|---|
[λ°±μ€][Node.js] 1712λ² : μμ΅λΆκΈ°μ (0) | 2021.07.14 |
[λ°±μ€][Node.js] 1676λ² : ν©ν λ¦¬μΌ 0μ κ°μ (0) | 2021.07.11 |
[λ°±μ€][Node.js] 1620λ² : ν¬μΌλͺ¬ λ§μ€ν° μ΄λ€μ (0) | 2021.07.10 |
[λ°±μ€][Node.js] 1550λ² : 16μ§μ (0) | 2021.07.09 |
λκΈ