๐ŸŒ  ๋ฌธ์ œ

๋จธ์“ฑ์ด๋Š” 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์˜ ํฌ๊ธฐ๋ฅผ ๋ฒ—์–ด๋‚œ ๋ฐฉํ–ฅํ‚ค ์ž…๋ ฅ์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
  • 0 ≤ keyinput์˜ ๊ธธ์ด ≤ 50
  • 1 ≤ board[0] ≤ 99
  • 1 ≤ board[1] ≤ 99
  • keyinput์€ ํ•ญ์ƒ 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

  • [0, 0]์—์„œ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์œ„๋กœ ํ•œ ์นธ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‘ ์นธ ์ด๋™ํ•œ ์ขŒํ‘œ๋Š” [2, 1]์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช… #2

  • [0, 0]์—์„œ ์•„๋ž˜๋กœ ๋‹ค์„ฏ ์นธ ์ด๋™ํ•œ ์ขŒํ‘œ๋Š” [0, -5]์ด์ง€๋งŒ ๋งต์˜ ์„ธ๋กœ ํฌ๊ธฐ๊ฐ€ 9์ด๋ฏ€๋กœ ์•„๋ž˜๋กœ๋Š” ๋„ค ์นธ์„ ๋„˜์–ด์„œ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [0, -4]๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงž ํ’€์ด

function solution(keyinput, board) {
    let answer = [0, 0]
    while (keyinput.length != 0) {
        // keyinput ๋ฐฐ์—ด ํ•˜๋‚˜์”ฉ ๋นผ์„œ ํ™•์ธ
        let move = keyinput.shift();
        // ๋ฐฉํ–ฅํ‚ค: left ์ผ ๋•Œ,
        if (move === "left") {
            if (answer[0] === (board[0] - 1) / 2 * -1) {

            } else {
                answer[0] -= 1;
            }
        }
        // ๋ฐฉํ–ฅํ‚ค: right ์ผ ๋•Œ,
        if (move === "right") {
            if (answer[0] === (board[0] - 1) / 2) {

            } else {
                answer[0] += 1;
            }
        }
        // ๋ฐฉํ–ฅํ‚ค: up ์ผ ๋•Œ,
        if (move === "up") {
            if (answer[1] === (board[1] - 1) / 2) {

            } else {
                answer[1] += 1;
            }
        }
        // ๋ฐฉํ–ฅํ‚ค: down ์ผ ๋•Œ,
        if (move === "down") {
            if (answer[1] === (board[1] - 1) / 2 * -1) {

            } else {
                answer[1] -= 1;
            }
        }
    }
    return answer;
}

+ Recent posts