호지

[프로그래머스] 공원 산책 문제풀이 JS 본문

알고리즘/프로그래머스

[프로그래머스] 공원 산책 문제풀이 JS

_hoji

동서남북 각 방향에 따라서, route가 해당 방향으로 갈 수 없으면 그 명령어는 그대로 버리면 된다

시작점 S를 먼저 찾고 각각의 route에 대해 중간에 공원을 벗어나거나, 장애물을 만나는지 확인하면 된다.

function solution(park, routes) {
  var answer = [];
  let x = 0,
    y = 0;
  const moves = {E: [0, 1], S: [1, 0], W: [0, -1], N: [-1, 0]};
  for (let i = 0; i < park.length; i++) {
    const j = park[i].indexOf("S");
    if (j !== -1) {
      x = i;
      y = j;
      break;
    }
  }

  routes.forEach((route) => {
    let [d, n] = route.split(" ");
    n = parseInt(n);
    for (var i = 1; i <= n; i++) {
      var nx = x + moves[d][0] * i;
      var ny = y + moves[d][1] * i;
      if (nx >= 0 && nx < park.length && ny >= 0 && ny < park[0].length) {
        if (park[nx][ny] === "X") {
          break;
        }
      } else {
        break;
      }
    }
    if (i === n + 1) {
      x = nx;
      y = ny;
    }
  });

  answer.push(x);
  answer.push(y);

  return answer;
}

https://school.programmers.co.kr/learn/courses/30/lessons/172928

Comments