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 |
댓글