[๋ฌธ์ ]
ํค์ ์ ๋ ฅ๋๋ก ์บ๋ฆญํฐ๊ฐ ์์ง์ธ ์ต์ข ์ขํ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ . ๋งต์ ๋ฒ์๊ฐ ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์, ๊ทธ ๋ฒ์๋ฅผ ์ด๊ณผํด์ ์ด๋ํ ์ ์๋ค.
[ํ๋ ธ๋ ์ด์ ]
์ฒ์์ Math.abs() ๋ก ์ ๋๊ฐ์ด ๋ฒ์ ์์ ๋ค์ด์๋ค๋ฉด ์/์๋, ์ค๋ฅธ์ชฝ/์ผ์ชฝ ์ผ๋ก ๋๋ ์ ์ด๋ํ ์ ์๊ฒ ํ๋๋ฐ,
์ด๋ด ๊ฒฝ์ฐ y์ถ ๋งจ ์ ๊ฒฝ๊ณ๊ฐ์ ์์นํ๋ค๋ฉด ์๋ก๋ ๋ชป๊ฐ์ง๋ง ์๋๋ก๋ ์ด๋์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
์ด ์ ์ ๊ฐ๊ณผํด์ ํ๋ ธ๋ค.
<๋์ ํ์ด>
function solution(keyinput, board) {
let point = [0, 0];
const xLimit = Math.floor(board[0] / 2);
const yLimit = Math.floor(board[1] / 2);
keyinput.map(key => {
if (point[0] < xLimit && key === "right") {
point[0] += 1
} else if (point[0] > -xLimit && key === "left") {
point[0] -= 1
};
if (point[1] < yLimit && key === "up") {
point[1] += 1
} else if (point[1] > -yLimit && key === "down") {
point[1] -= 1
}
})
return point;
}
๊ทธ๋์ ๊ฐ ๊ฒฝ๊ณ์ ๊ณผ ํค์ ๊ฐ์ ์กฐ๊ฑด์ผ๋ก ์ค์ ๊ตฌํ๋ค.
<๋ค๋ฅธ ์ฌ๋์ ํ์ด>
function solution(keyinput, board) {
let res = [0,0];
for (let p of keyinput) {
switch(p){
case 'left': if (-res[0] < board[0]/2-1) res[0]--; break;
case 'right': if (res[0] < board[0]/2-1) res[0]++; break;
case 'up': if (res[1] < board[1]/2-1) res[1]++; break;
case 'down': if (-res[1] < board[1]/2-1) res[1]--; break;
}
}
return res;
}
case ๋ฌธ์ ์ฝ๋๊ฐ ๋์ฒด๋ก ์ง์ ๋ถํด์ ธ์ ์ ์์ฐ๊ฒ ๋๋๋ฐ, ์ด๋ ๊ฒ ์ธ ์ ์๊ตฌ๋๋ฅผ ๋๊ผ๋ค.
case ๋ง๋ค ์ด๋ป๊ฒ ๋์ํดํ๋์ง ํ๋์ ๋ณด์ธ๋ค.