
문제설명
- 출발 [0,0] 도착 [arr.length. arr[0].length]
- 코테에서는 느린 dfs 을 거의 사용하지 않음 bfs 으로 가면 무족건 빠른길을 얻을수 있음
- 가는 방향에 따른 함수를 만들어야됨
- 이때 갔던 곳으로 갈수 있으니 처음부터 갔던 곳은 더이상 안가게 만들어야됨
- 사실 이거 2번정도 풀어봐서.. 금방 풀었다.
나의 풀이
function solution(maps) {
// 예전에 풀었던 문제임
var answer=0;
var stack=[[[0,0],1]];
var visited = Array.from({length:maps.length},()=> Array(maps[0].length).fill(0))
var go_x =[-1,0,1,0];
var go_y= [0,-1,0,1];
visited[0][0]=1;
//생각해보니 bfs 가 가장 빠르니 ... 그냥 가도될듯
//start =[0,0] end= maps.length, maps[0].length
while(stack.length>0){
// 하나빼기
let [go,count]= stack.shift();
if (go[0] === maps.length - 1 && go[1] === maps[0].length - 1) {
return count;
}
for(var i=0; i<4; i++){
//update route
let new_y= go[0]+go_x[i]
let new_x= go[1]+go_y[i]
// 갈수 있는지 확인
if(new_y>=0 && new_y<maps.length && new_x>=0 && new_x<maps[0].length){
if( maps[ new_y][new_x]==1 && visited[new_y][ new_x]==0){
//갈수 있다는 의미임
visited[new_y][ new_x]= 1;
stack.push([[new_y,new_x],count+1]);
}
}
}
}
return -1
}
다른 사람 풀이
졸려서 내일함...ㅎ
내코드와 비교