
// 오른 아래 왼 위
const dy = [0, 1, 0, -1];
const dx = [1, 0, -1, 0];
function solution(maps) {
  const [n, m] = [maps.length, maps[0].length];
  const visited = Array(n)
    .fill(null)
    .map((_) => Array(m).fill(0));
  const q = [[0, 0]];
  visited[0][0] = 1;
  while (q.length) {
    const [y, x] = q.shift();
    if (y === n - 1 && x === m - 1) return visited[y][x];
    for (let i = 0; i < 4; ++i) {
      const [ny, nx] = [y + dy[i], x + dx[i]];
      if (ny < 0 || ny >= n || nx < 0 || nx >= m) continue;
      if (!maps[ny][nx] || visited[ny][nx]) continue;
      visited[ny][nx] = visited[y][x] + 1;
      q.push([ny, nx]);
    }
  }
  return -1;
}
아직 몰라도 너무 모른다. 최단 거리 구하는 문제는 처음인데, BFS 알고리즘 자체가 최단 거리를 구하는 거라 여러 경로로 도달할 경우를 고려할 필요가 없다고 한다.