프로그래머스 JS 공원산책

이명진·2023년 4월 27일
0

코드카타

목록 보기
68/69

문제 요약

맵이 주어지고 로봇강아지가 있는데 명령을 준다. 명령은 방향과 거리로 주는데 맵 상에서 방향과 거리 입력값들을 파악해서
마지막 명령 이후 어디에 위치해 있는지 리턴하면된다
맵의 좌표는 좌측 상단이 (0,0) 이다.

문제 풀이

내가 푼 풀이


function solution(park, routes) {
    
    let start = [];
    let map = park.map((x,i)=>{
      let idx = x.indexOf('S');
      if(idx>-1){
        start = [i,idx]
      }
      return x.split('')
    });
  
  routes.forEach(x=>{
    start = move(start,x,map)
  })
   
    return start;
}
function move(now,routes,map){

  const [direction,go] = routes.split(' ');
  const direct = {'W':[0,-1],'E':[0,1],'S':[1,0],'N':[-1,0]}
  let prev = now.slice(0);
  for(let i =0; i<go;i++){
     let x = now[0]+direct[direction][0];
      let y = now[1]+direct[direction][1];

       if(x>-1 && y>-1 &&  map[x] &&map[x][y]&& map[x][y]!='X'){
      
       
           now[0]=x;
          now[1]=y;
      
       
      }else{
        return prev
      }
  }

  if(!map[now[0]][now[1]] || now[0]<0 || now[1]<0 || now[0]>=map.length ||  now[1]>=map[0].length){
    return prev
  }else{
     return now;  
  }
  
 
}

내가 푼 풀이는 재귀를 활용해서 문제를 풀었다.

1차 시도는 실패했다.

테스트 코드는 다 통과했는데 제출하니 런타임 에러가 났기 때문이다.
첫 코드는 27번째 줄에서 if(x>-1 && y>-1 && map[x][y]!=‘X’) 이 코드였다.
지금 확인해보니 왜 런타임 에러가 나는지 알겠다.

하도 안풀려서 질문하기에 올렸는데 친절하신 분이 수정해보라고 권유해줘서 풀수 있었다.

런타임 에러 난 이유

다시 수정한 코드를 비교해보면 알겠지만 map[x][y] 일때 [x]가 undefined 일때 런타임 에러가 난다.
그래서 조건을 map[x]가 있을때 로 준것이다.

결과는 통과~ 저것 하나 때문에 한달 동안 다른 문제를 풀었는데 성장하긴 했나보다. 바로 보니 뭐가 문제인지 파악할수 있었다.

다른 사람들도 비슷하게 푼것 같다.

위치를 잡아주고 direction.으로 반복문을 써서 돌렸다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글