๐ŸŽฒ ๋ฐฑ์ค€ 1261๋ฒˆ ์•Œ๊ณ ์ŠคํŒŸ

Jeongeunยท2024๋…„ 1์›” 7์ผ
0

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
150/186

๋ฐฑ์ค€ 1261๋ฒˆ

๐Ÿ’ก ๋ฒฝ ๋ถ€์ˆ˜๋Š” ๊ฒƒ์„ ๊ฑฐ๋ฆฌ๋น„์šฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋””ใ….

const fs = require('fs'); 
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const [M, N] = input.shift().split(" ").map(Number);
const miro = input.map((el) => el.split("").map(Number));

const dir = [
  [0, 1],
  [0, -1],
  [1, 0],
  [-1, 0],
];

const dijkstra = () => {
  const queue = [[0, 0]];
  const distArr = Array.from(new Array(N), () => new Array(M).fill(Infinity));
  distArr[0][0] = 0;
  while (queue.length) {
    const [pY, pX] = queue.shift();

    for (let d = 0; d < 4; d++) {
      const nY = pY + dir[d][0];
      const nX = pX + dir[d][1];
      let val;
      if (nY < 0 || nX < 0 || nY >= N || nX >= M) continue;
      if (miro[nY][nX] === 1) val = 1;
      else val = 0;
      if (distArr[nY][nX] > distArr[pY][pX] + val) {
        distArr[nY][nX] = distArr[pY][pX] + val;
        queue.push([nY, nX]);
      }
    }
  }

  return distArr[N - 1][M - 1];
};

console.log(dijkstra());

0๊ฐœ์˜ ๋Œ“๊ธ€