(프로그래머스 1Lv, 캐릭터의 좌표)
내 풀이)
key input은 최대 50이므로 for 문을 쓴대도 시간적인 제한은 없다.
for 문으로 key input 원소들을 하나씩 받아와, 좌표 처리를 하면 되는 문제이다.
단, 좌표를 옮길 때 board 바깥으로 벗어나지 않게끔 케이스 처리를 해야 한다.
좀 더 깔끔한 코드를 위해 증감 연산자를 썼으며, 값을 먼저 계산한 다음 그 값이 board를 벗어나는지 아닌지 체크해야 하므로 ++--value 형식으로 코드를 썼다.
내 코드)
function solution(keyinput, board) {
let edgeRow = Math.floor(board[0] / 2);
let edgeCol = Math.floor(board[1] / 2);
let xLoc = 0;
let yLoc = 0;
for (let key of keyinput) {
switch (key) {
case "left":
xLoc = --xLoc < -1 * edgeRow ? -1 * edgeRow : xLoc;
break;
case "right":
xLoc = ++xLoc > edgeRow ? edgeRow : xLoc;
break;
case "down":
yLoc = --yLoc < -1 * edgeCol ? -1 * edgeCol : yLoc;
break;
case "up":
yLoc = ++yLoc > edgeCol ? edgeCol : yLoc;
break;
}
}
return [xLoc, yLoc];
}
'알고리즘 > JavaScript' 카테고리의 다른 글
JavaScript로 프로그래머스 풀기, 최솟값 만들기 (0) | 2023.10.27 |
---|---|
JavaScript로 프로그래머스 풀기, 과일 장수 (0) | 2023.10.25 |
JavaScript) 문자열을 자르는 메소드, substr, substring, slice (0) | 2023.10.24 |
JavaScript) 문자열을 잘라서 배열로 바꾸는 split 메소드 (0) | 2023.10.23 |