function solution(maps) {
var answer = 0;
var n=maps[0].length;
var m=maps.length;
//var arr=new Array(n).fill(0);
var check=new Array(m);
for(var j=0;j<m;j++){
check[j]=new Array(n).fill(0);
}
//var check=new Array(m).fill(arr);
var sum=[];
var depth=1;
//var cnt=0;
var dx = [-1, 0, 1, 0];
var dy = [0, 1, 0, -1];
function dfs(x,y){
//if(check[x][y]==1) return ;
if(x===m-1 && y===n-1) sum.push(depth);
else {
for(var i=0;i<4;i++){
var _x=x+dx[i];
var _y=y+dy[i];
if(_x>=0 && _y>=0 && _x<m && _y<n && maps[_x][_y]==1
&& check[_x][_y]===0){
check[_x][_y]=1;
depth++;
dfs(_x,_y);
check[_x][_y]=0;
depth--;
}
}
}
}
dfs(0,0);
if(sum.length) {
sum.sort();
answer=sum.shift();
} else {
answer = -1;
}
return answer;
}
BFS 풀이
function solution(maps) {
var answer = 0;
var n=maps[0].length;
var m=maps.length;
//var arr=new Array(n).fill(0);
var check=new Array(m);
for(var j=0;j<m;j++){
check[j]=new Array(n).fill(0);
}
//var check=new Array(m).fill(arr);
//var sum=[];
var queue=[[0,0]];
var depth=1;
//var cnt=0;
var dx = [-1, 0, 1, 0];
var dy = [0, -1, 0, 1];
while(queue.length){
answer++;
let size=queue.length;
for(var i=0;i<size;i++){
var flag=queue.shift();
var x=flag[0];
var y=flag[1];
if(check[x][y]) continue;
//if(!check[x][y]){
//maps[x][y]=0;
check[x][y]=1;
if(x===m-1 && y===n-1) return answer;
for(var j=0;j<4;j++){
var nx=x+dx[j];
var ny=y+dy[j];
if(nx<m && ny<n && nx>=0 && ny>=0){
if(!check[nx][ny] && maps[nx][ny]){
queue.push([nx,ny]);
}
}
}
}
}
return -1;
}