๋จธ์ฑ์ด๋ 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
}