문제
https://school.programmers.co.kr/learn/courses/30/lessons/120861
풀이
어떤 조건일때 어떤 동작을 한다? case 를 나누자 => 스위치문 사용
제약 조건으로는 맵의 크기를 넘기면 안된다고 했으니, 최대 움직일 수 있는 사이즈를 구한다.
2로 나누고 반내림으로 넓이 높이를 구한다! 연산을 수행하면서 넘을 경우에는 무시하도록 if 조건을 달아준다.
이때 1을 더하는 것과 달리 -1을 시행하는 경우에는 - 값이 더 커야 한다는 것을 주의하며 부등호를 표기하자
function solution(keyinput, board) {
const init = [0, 0];
//맵 크기를 넘어가는 경우는 무시
const width = Math.floor(board[0] / 2);
const height = Math.floor(board[1] / 2);
keyinput.forEach((step) => {
switch (step) {
case "left":
if (init[0] - 1 >= -width) init[0] -= 1;
break;
case "right":
if (init[0] + 1 <= width) init[0] += 1;
break;
case "up":
if (init[1] + 1 <= height) init[1] += 1;
break;
case "down":
if (init[1] - 1 >= -height) init[1] -= 1;
break;
}
});
return init;
}
'개발 > 알고리즘(코딩테스트)' 카테고리의 다른 글
프로그래머스, 자바스크립트) 등수 매기기 (0) | 2024.03.08 |
---|---|
프로그래머스, 자바스크립트) 직사각형 넓이 구하기 (1) | 2024.03.07 |
프로그래머스, 자바스크립트) 종이 자르기 (0) | 2024.03.07 |
프로그래머스, 자바스크립트) 외계어 사전 (0) | 2024.03.04 |
프로그래머스, 자바스크립트) 문자열 겹쳐쓰기 (0) | 2024.03.04 |