κ°μΈκ³΅λΆ/Algorithm
[λ°±μ€][Node.js] 2178λ² : λ―Έλ‘ νμ
πλ°λ΄λ΄π
2021. 7. 29. 22:03
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();
});
λ°μν