본문 바로가기
BEB/algorithm

25_robotPath

by ddanss 2022. 11. 29.
728x90

BFS!

  const robotPath = function (room, src, dst) {
  let dx = [0,1,0,-1]; //4방향
  let dy = [1,0,-1,0]; //4방향
  let row = room.length;
  let col = room[0].length;
  let vis = Array.from(Array(row), () => Array(col).fill(0)) //방문했는지
  let queue = []; //큐
  let cur_x,cur_y,x,y; //cur_x:현재위치, cur_y : 현재위치
  queue.push(src[0]); 
  queue.push(src[1]);
  vis[src[0]][src[1]] = 1;
  while(queue.length>=1) { //큐에 값이 있는 동안 계속 돌음
    x = queue.shift();
    y = queue.shift();
    for(let i=0;i<4;i++) { //상하좌우
      cur_x = x+dx[i];
      cur_y = y+dy[i];
      if(cur_x<0 || cur_x>=row || cur_y<0 || cur_y>=col) continue;
      if(vis[cur_x][cur_y]>=1 || room[cur_x][cur_y] === 1) continue;
      queue.push(cur_x);
      queue.push(cur_y);
      vis[cur_x][cur_y] = vis[x][y] + 1;
    }
  }
  return vis[dst[0]][dst[1]]-1;
};
반응형

'BEB > algorithm' 카테고리의 다른 글

27 gossipprotocol  (0) 2022.12.01
[자바스크립트] 부분 문자열의 합 26_LSCS  (0) 2022.11.30
[Javascript] 기수정렬  (0) 2022.11.28
23_spiralTraversal  (0) 2022.11.25
[JavaScript] 배열 회전 (90도,180도,270도)  (0) 2022.11.24

댓글