Algorithm
- λ―Έλ‘ νμ -
λ¬Έμ
N×Mν¬κΈ°μ λ°°μ΄λ‘ ννλλ λ―Έλ‘κ° μλ€.
1 | 0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 1 |
λ―Έλ‘μμ 1μ μ΄λν μ μλ μΉΈμ λνλ΄κ³ , 0μ μ΄λν μ μλ μΉΈμ λνλΈλ€. μ΄λ¬ν λ―Έλ‘κ° μ£Όμ΄μ‘μ λ, (1, 1)μμ μΆλ°νμ¬ (N, M)μ μμΉλ‘ μ΄λν λ μ§λμΌ νλ μ΅μμ μΉΈ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. ν μΉΈμμ λ€λ₯Έ μΉΈμΌλ‘ μ΄λν λ, μλ‘ μΈμ ν μΉΈμΌλ‘λ§ μ΄λν μ μλ€.
μμ μμμλ 15μΉΈμ μ§λμΌ (N, M)μ μμΉλ‘ μ΄λν μ μλ€. μΉΈμ μ λμλ μμ μμΉμ λμ°© μμΉλ ν¬ν¨νλ€.
μ μΆλ ₯ μμ
λ¬Έμ νκΈ°
let BFS = function (q, v, r) {
while (q.length !== 0) {
let shiftQ = q.shift();
let [x, y] = [shiftQ[0], shiftQ[1]];
for (let i = 0; i < 4; i++) {
let nx = x + dx[i];
let ny = y + dy[i];
// λ°©λ¬Ένμ μ΄ μκ³ 0μ΄ μλλΌλ©΄
if (0 <= nx && nx < r[0] && 0 <= ny && ny < r[1]) {
if (v[nx][ny] === false && input[nx][ny] !== 0) {
q.push([nx, ny]);
input[nx][ny] = input[x][y] + 1;
v[nx][ny] = true;
}
}
}
}
return;
};
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
let queue = [];
let dx = [0, 0, -1, 1]; // xκΈ°μ€ μνμ’μ°
let dy = [-1, 1, 0, 0]; // yκΈ°μ€ μνμ’μ°
rl.on("line", function (line) {
input.push(line.toString());
}).on("close", function () {
let range = input
.shift()
.split(" ")
.map((el) => Number(el));
input = input.map((el) => el.split("").map((el) => Number(el)));
let visited = Array.from(Array(range[0]), () => Array(range[1]).fill(false));
visited[0][0] = true;
queue.push([0, 0]);
BFS(queue, visited, range);
console.log(input[range[0] - 1][range[1] - 1]);
process.exit();
});
λ°μν
'κ°μΈκ³΅λΆ > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€][Node.js] 2338λ² : κΈ΄μ리 κ³μ° (0) | 2021.08.01 |
---|---|
[λ°±μ€][Node.js] 2292λ² : λ²μ§ (0) | 2021.07.30 |
[λ°±μ€][Node.js] 2167λ² : 2μ°¨μ λ°°μ΄μ ν© (0) | 2021.07.28 |
[λ°±μ€][Node.js] 2163λ² : μ΄μ½λ¦Ώ μλ₯΄κΈ° (0) | 2021.07.28 |
[λ°±μ€][Node.js] 2108λ² : ν΅κ³ν (0) | 2021.07.26 |
λκΈ