방문 길이

이조은·2020년 12월 9일
0

Code Kata

목록 보기
6/15

문제 확인하기

나의 풀이

🙅🏻‍♀️ 첫 번째 풀이

function solution(dirs) {
  let arr = dirs.split("");
  let start = [0, 0];
  let result = [];
  let notDuplArr = [];

  for (let i = 0; i < dirs.length; i++) {
    switch (dirs[i]) {
      case "U":
        start[1] = start[1] + 1;
        break;
      case "D":
        start[1] = start[1] - 1;
        break;
      case "R":
        start[0] = start[0] + 1;
        break;
      case "L":
        start[0] = start[0] - 1;
        break;
    }
    if (start[0] >= -5 && start[0] <= 5 && start[1] >= -5 && start[1] <= 5) {
      result.push([...start]);
    }
  }
  return [...new Set(result.map((el) => el.join("")))].length + 1;
}

모범 답안

👍 첫 번째 풀이

function solution(dirs) {
  var ansObj = {};
  var currentX = 0;
  var currentY = 0;
  for (var i = 0; i < dirs.length; i++) {
  //첫 시작점을 위해 currentX, Y를 nextX, Y로 할당
    var nextX = currentX;
    var nextY = currentY;
    var key = "key";
    //방향성을 나타내야하는데 key를 만들 때 방향을 넣어서 더해줌
    if (dirs[i] === "U") {
      nextY = currentY + 1;
      key = key + currentX + currentY + nextX + nextY;
    }
    if (dirs[i] === "R") {
      nextX = currentX + 1;
      key = key + currentX + currentY + nextX + nextY;
    }
    if (dirs[i] === "D") {
      nextY = currentY - 1;
      key = key + nextX + nextY + currentX + currentY;
    }
    if (dirs[i] === "L") {
      nextX = currentX - 1;
      key = key + nextX + nextY + currentX + currentY;
    }
    if (nextX < -5 || nextX > 5 || nextY < -5 || nextY > 5) {
      //do nothing
    } else {
    // 선을 키로 잡아 1을 할당함
      ansObj[key] = 1;
      // 다음 점을 현재 점으로 옮겨주고 다시 스따뜨
      currentX = nextX;
      currentY = nextY;
    }
  }
  return Object.keys(ansObj).length;
}

to be continued 😁

profile
싱글벙글

0개의 댓글