[백준알고리즘] 알고리즘 연습 - 2178

krkorklo·2022년 3월 1일
0

백준알고리즘

목록 보기
9/27

2178 - 미로 탐색

https://www.acmicpc.net/problem/2178

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let [n, m] = input[0].split(" ").map((n) => Number(n));
let arr = [];
for(var i=1; i<input.length; i++) {
    arr.push((''+input[i]).split(""))
}

let visited = Array.from(Array(arr.length), () => Array(arr[0].length).fill(false));
let queue = [[0, 0, 1]];
let len = 0;

while(queue.length != 0) {
    let [x, y, cnt] = queue.shift();
    if (visited[x][y]) continue;
    visited[x][y] = true;
    if (x != 0 && arr[x-1][y] == 1) {
        queue.push([x-1, y, cnt+1]);
    } 
    if (x != n - 1 && arr[x+1][y] == 1) {
        queue.push([x+1, y, cnt+1]);
    } 
    if (y != 0 && arr[x][y-1] == 1) {
        queue.push([x, y-1, cnt+1]);
    }
    if (y != m - 1 && arr[x][y+1] == 1) {
        queue.push([x, y+1, cnt+1]);
    }
    if (x == n-1 && y == m-1) len = cnt;
}

console.log(len)

0개의 댓글