
๋จธ์ฑ์ด๋ RPG๊ฒ์์ ํ๊ณ  ์์ต๋๋ค. ๊ฒ์์๋ up, down, left, right ๋ฐฉํฅํค๊ฐ ์์ผ๋ฉฐ ๊ฐ ํค๋ฅผ ๋๋ฅด๋ฉด ์, ์๋, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์ด๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด [0,0]์์ up์ ๋๋ฅธ๋ค๋ฉด ์บ๋ฆญํฐ์ ์ขํ๋ [0, 1], down์ ๋๋ฅธ๋ค๋ฉด [0, -1], left๋ฅผ ๋๋ฅธ๋ค๋ฉด [-1, 0], right๋ฅผ ๋๋ฅธ๋ค๋ฉด [1, 0]์
๋๋ค. ๋จธ์ฑ์ด๊ฐ ์
๋ ฅํ ๋ฐฉํฅํค์ ๋ฐฐ์ด keyinput์ ๋งต์ ํฌ๊ธฐ board์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์บ๋ฆญํฐ๋ ํญ์ [0,0]์์ ์์ํ  ๋ ํค ์
๋ ฅ์ด ๋ชจ๋ ๋๋ ๋ค์ ์บ๋ฆญํฐ์ ์ขํ [x, y]๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
[0, 0]์ board์ ์  ์ค์์ ์์นํฉ๋๋ค. ์๋ฅผ ๋ค์ด board์ ๊ฐ๋ก ํฌ๊ธฐ๊ฐ 9๋ผ๋ฉด ์บ๋ฆญํฐ๋ ์ผ์ชฝ์ผ๋ก ์ต๋ [-4, 0]๊น์ง ์ค๋ฅธ์ชฝ์ผ๋ก ์ต๋ [4, 0]๊น์ง ์ด๋ํ  ์ ์์ต๋๋ค.
board์ [๊ฐ๋ก ํฌ๊ธฐ, ์ธ๋ก ํฌ๊ธฐ] ํํ๋ก ์ฃผ์ด์ง๋๋ค.board์ ๊ฐ๋ก ํฌ๊ธฐ์ ์ธ๋ก ํฌ๊ธฐ๋ ํ์์
๋๋ค.board์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋ ๋ฐฉํฅํค ์
๋ ฅ์ ๋ฌด์ํฉ๋๋ค.keyinput์ ๊ธธ์ด โค 50board[0] โค 99board[1] โค 99keyinput์ ํญ์ up, down, left, right๋ง ์ฃผ์ด์ง๋๋ค.| keyinput | board | result | 
|---|---|---|
| ["left", "right", "up", "right", "right"] | [11, 11] | [2, 1] | 
| ["down", "down", "down", "down", "down"] | [7, 9] | [0, -4] | 
์ ์ถ๋ ฅ ์ ์ค๋ช #1
์ ์ถ๋ ฅ ์ ์ค๋ช #2
function solution(keyinput, board) {
    // ๋์ ์์น
    const pos = [0,0]
    // ๋ฐฉํฅ ๋ณ ๋ณํ๋
    const key = {
        up: [0,1], 
        down: [0,-1], 
        left: [-1,0], 
        right: [1,0]
    }
    // ์ต๋ ์ด๋ ๊ฐ๋ฅ๊ฑฐ๋ฆฌ
    const wall = [board[0]/2 << 0 , board[1]/2 << 0]
    keyinput.forEach(dir => {
        // ๋ฒฝ์ ๋ง๋์ง ์์๋ค๋ฉด ์ด๋
        if(Math.abs(pos[0]+key[dir][0]) <= wall[0] && Math.abs(pos[1]+key[dir][1]) <= wall[1]) {
            pos[0]+=key[dir][0]
            pos[1]+=key[dir][1]
        }
    })
    return pos
}