Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript를 사용하여 미로 끝 경로 찾기

<시간/>

문제

N * N 차수의 행렬을 취하는 JavaScript 함수를 작성해야 합니다. 매트릭스의 벽은 'W'로 표시되고 빈 위치는 '_'로 표시됩니다.

우리는 언제든지 4방향으로 이동할 수 있습니다. 우리의 함수는 끝 [N - 1, N - 1]에 도달할 수 있으면 true를 반환해야 하고 그렇지 않으면 false를 반환해야 합니다.

예시

다음은 코드입니다 -

const maze = [
   ['_', 'W', 'W', 'W'],
   ['_', 'W', 'W', 'W'],
   ['W', '_', '_', 'W'],
   ['W', 'W', 'W', '_']
];
const canFindPath = (m = []) => {
   let h = m.length;
   let w = m[0].length;
   let queue = [[0, 0]];
   let mark = (xx, yy) => {
      [[1, 0], [-1, 0], [0, 1], [0, -1], [0, 0]].map(p => {
         let [x, y] = [p[0]+xx, p[1]+yy];
         if (0 <= x && x < w) {
            if (0 <= y && y < h) {
               if (m[y][x] === '.') {
                  m[y][x] = '#';
                  queue.push([x, y]);
               }
            }
         }
      });
   };
   do {
      let p = queue.shift();
      mark(...p);
   } while (queue.length);
   return m[h-1][w-1] !== '.';
};
console.log(canFindPath(maze));

출력

true