โ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1697
๐จ๋ฌธ์ ํ์ด
bfs๋ฅผ ์ด์ฉํ๋ผ ๋ถํ์ํ ์ฐ์ฐ์ ์ฒ๋ฆฌํ์ง ์๋ ๋ฐฉํฅ์ผ๋ก ์ต์ ํ ํ์๋ค. ( dp[ i ] ๋ i์ง์ ์ ๊ฐ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์ต์์๊ฐ )
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim();
let [N, K] = input.split(" ").map((n) => Number(n));
let dp = Array(100001).fill(Infinity);
let endPoint = 100000;
let index = N;
let answer = undefined;
dp[N] = 0;
let queue = [[N, 0]];
while (queue.length) {
let [point, time] = queue.shift();
if (point === K) {
answer = time;
break;
}
if (point * 2 <= endPoint && dp[point * 2] > time + 1) {
dp[point * 2] = time + 1;
queue.push([point * 2, time + 1]);
}
if (point + 1 <= endPoint && dp[point + 1] > time + 1) {
dp[point + 1] = time + 1;
queue.push([point + 1, time + 1]);
}
if (point - 1 >= 0 && dp[point - 1] > time + 1) {
dp[point - 1] = time + 1;
queue.push([point - 1, time + 1]);
}
}
console.log(answer);
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode [JS] > 3192. Minimum Operations to Make Binary Array Elements Equal to One II (0) | 2025.03.12 |
---|---|
LeetCode[JS] 53๋ฒ Maximum Subarray (0) | 2025.03.11 |
10์ง์ <-> 16์ง์ ๋ณํ ์๊ณ ๋ฆฌ์ฆ (0) | 2025.03.08 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋ด์ธ๋ ์ฃผ๋ฌธ (0) | 2025.03.08 |
๋ฐฑ์ค[JS] > 13305๋ฒ ์ฃผ์ ์ (0) | 2025.03.08 |