๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„์—” ๊ณต๋ถ€/๐Ÿซง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Javascript] ์บ๋ฆญํ„ฐ์˜ ์ขŒํ‘œ || ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

728x90

[๋ฌธ์ œ]

ํ‚ค์˜ ์ž…๋ ฅ๋Œ€๋กœ ์บ๋ฆญํ„ฐ๊ฐ€ ์›€์ง์ธ ์ตœ์ข… ์ขŒํ‘œ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ. ๋งต์˜ ๋ฒ”์œ„๊ฐ€ ์ฃผ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•ด์„œ ์ด๋™ํ•  ์ˆœ ์—†๋‹ค. 

 

[ํ‹€๋ ธ๋˜ ์ด์œ ]

์ฒ˜์Œ์—” 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 ๋งˆ๋‹ค ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•ดํ•˜๋Š”์ง€ ํ•œ๋ˆˆ์— ๋ณด์ธ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•