개발자 되는 중/알고리즘

프로그래머스 Javascript 캐릭터의 좌표

SeonChoco 2022. 12. 14. 21:12

switch 문 써보고 싶었는데, 잘 쓸 줄 몰라서 if, else if로 풀었다.

function solution(keyinput, board) {
  let x = 0;
  let y = 0;
  let xLimit = (board[0] - 1) / 2;
  let yLimit = (board[1] - 1) / 2;
  keyinput.forEach((item) => {
    if (item === "left") {
      if (x === -xLimit) {
      } else {
        x -= 1;
      }
    } else if (item === "right") {
      if (x === xLimit) {
      } else {
        x += 1;
      }
    } else if (item === "up") {
      if (y === yLimit) {
      } else {
        y += 1;
      }
    } else if (item === "down") {
      if (y === -yLimit) {
      } else {
        y -= 1;
      }
    }
  });

  let answer = [x, y];
  return answer;
}

const keyinput = ["down", "down", "down", "down", "down"];
const board = [7, 9];

console.log(solution(keyinput, board));

다른 사람이 switch로 푼 답

function solution(keyinput, board) {
    var answer = [0, 0];

    const bndrX = (board[0] - 1) / 2;
    const bndrY = (board[1] - 1) / 2;

    keyinput.forEach(cmd => {
        switch(cmd) {
            case 'up': {
                if(answer[1] !== bndrY) answer[1]++;
                break;
            }
            case 'down': {
                if(answer[1] !== -bndrY) answer[1]--;
                break;
            }
            case 'left': {
                if(answer[0] !== -bndrX) answer[0]--;
                break;
            }
            case 'right': {
                if(answer[0] !== bndrX) answer[0]++;
                break;
            }
        }
    });

    return answer;
}