PS/Programmers

Programmers / Level 0 / 캐릭터의 좌표 / JS

KimMinJun 2023. 1. 24. 00:15

< 문제 바로가기 >

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

function solution(keyinput, board) {
  const [MAX_WIDTH, MAX_HEIGHT] = board;
  let moveObj = {
    "left": [-1, 0],
    "right": [1, 0],
    "up": [0, 1],
    "down": [0, -1]
  };

  let cur = [0, 0];
  for(let input of keyinput) {
    const [MOVE_COL, MOVE_ROW] = moveObj[input];
    const [CUR_COL, CUR_ROW] = cur;
    const [NEXT_ROW, NEXT_COL] = [CUR_ROW + MOVE_ROW, CUR_COL + MOVE_COL];

    if(Math.abs(NEXT_COL) > Math.floor(MAX_WIDTH / 2)) continue;
    if(Math.abs(NEXT_ROW) > Math.floor(MAX_HEIGHT / 2)) continue;

    cur = [NEXT_COL, NEXT_ROW];
  }

  return cur;
}

흔히 행렬에서 위로 간다고하면 행이 마이너스 되어서 [2][2] 였을 시에, [1][2]가 된다.

당연히 그렇게 생각하고 문제를 대충보고 풀었다가 왜 틀리지...? 라는 생각만 계속했다 ㅋㅋㅋㅋ

문제를 잘 읽어보고 착각하지 않으면 구현엔 크게 어려운것이 없는 문제이다!