๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programmers lv-0

์บ๋ฆญํ„ฐ์˜ ์ขŒํ‘œ - Java [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž…๋ฌธ]

by ๊ทคํ”ผํ‚ค 2022. 11. 28.

 

โค๏ธ Problem

๋”๋ณด๊ธฐ
  • ๋ฌธ์ œ
    ๋จธ์“ฑ์ด๋Š” 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๋งŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ & ์„ค๋ช…
no keyinput board result
1 ["left", "right", "up", "right", "right"] [11, 11] [2, 1]
2 ["down", "down", "down", "down", "down"] [7, 9] [0, -4]
  1. [0, 0]์—์„œ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์œ„๋กœ ํ•œ ์นธ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‘ ์นธ ์ด๋™ํ•œ ์ขŒํ‘œ๋Š” [2, 1]์ž…๋‹ˆ๋‹ค.
  2. [0, 0]์—์„œ ์•„๋ž˜๋กœ ๋‹ค์„ฏ ์นธ ์ด๋™ํ•œ ์ขŒํ‘œ๋Š” [0, -5]์ด์ง€๋งŒ ๋งต์˜ ์„ธ๋กœ ํฌ๊ธฐ๊ฐ€ 9์ด๋ฏ€๋กœ ์•„๋ž˜๋กœ๋Š” ๋„ค ์นธ์„ ๋„˜์–ด์„œ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [0, -4]๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

 


 

๐Ÿ’›Solution

ํ’€์ด

class Solution {
    public int[] solution(String[] keyinput, int[] board) {
        int horSetting = board[0]/2;
        int verSetting = board[1]/2;

        int answer[] = {0, 0};

        for(int i=0; i<keyinput.length; i++) {
            if(keyinput[i].contains("left")
                    ||keyinput[i].contains("right")) {
                if(keyinput[i].equals("right")) {
                    if (answer[0] < horSetting){
                        answer[0]++;
                    }
                } else {
                    if (answer[0] > -(horSetting)){
                        answer[0]--;
                    }
                }
            } else {
                if(keyinput[i].equals("up")) {
                    if (answer[1] < verSetting){
                        answer[1]++;
                    }
                } else {
                    if (answer[1] > -(verSetting)){
                        answer[1]--;
                    }
                }
            }
        }
        return answer;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ GOOD

 


 

๐Ÿ’œ Comment

์ฒ˜์Œ์— ์งฐ๋˜ ์ฝ”๋“œ๋Š” ํ…Œ์ŠคํŠธ 8๋ฒˆ์—์„œ ์‹คํŒจ๊ฐ€ ๋‚ฌ๋‹ค.

 

class Solution {
    public int[] solution(String[] keyinput, int[] board) {
        int answer[] = {0, 0};
        int horSetting = board[0]/2;
        int verSetting = board[1]/2;

        for(int i=0; i<keyinput.length; i++) {
            if(keyinput[i].contains("left")
                    ||keyinput[i].contains("right")) {
                if(keyinput[i].equals("right")) {
                    answer[0]++;
                } else {
                    answer[0]--;
                }
            } else {
                if(keyinput[i].equals("up")) {
                    answer[1]++;
                } else {
                    answer[1]--;
                }
            }
        }

        if(answer[0] > horSetting) {
            answer[0] = horSetting;
        } else if (answer[0] < -(horSetting)) {
            answer[0] = -(horSetting);
        } else {
            ;
        }

        if(answer[1] > verSetting) {
            answer[1] = verSetting;
        } else if (answer[1] < -(verSetting)) {
            answer[1] = -(verSetting);
        } else {
            ;
        }
        return answer;
    }
}

 

๊ณฐ๊ณฐํžˆ ์ƒ๊ฐ์„ ํ•ด๋ณด๋‹ˆ, ์œ„ ์ฝ”๋“œ์˜ ์กฐ๊ฑด๋ฌธ์—์„œ๋Š” board ๊ฐ’์„ ๋„˜์–ด๋„ ๊ณ„์†ํ•ด์„œ ๋ˆ„์ ๋˜๊ฑฐ๋‚˜ ๊ฐ์†Œ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์—ˆ๋‹ค.
๋งŒ์•ฝ board๊ฐ’์ด [3, 3]์ผ ๋•Œ, keyinput์ด ["right", "right", "up", "right", "right"] ์ด๋ผ๋ฉด board์˜ ์ขŒ์ธก ์ œํ•œ๊ฐ’์ธ 1์„ ๋„˜์–ด 4๊นŒ์ง€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด if (answer[0] < horSetting), if (answer[0] > -(horSetting)) ์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ํ†ตํ•ด ์ œํ•œ ๊ฐ’์„ ๋„˜๋Š” ๊ฒฝ์šฐ answer[0]์ด horSetting ๊ฐ’์„ ๋„˜์ง€ ๋ชปํ•˜๋„๋ก ์กฐ์ ˆํ•˜์˜€๋‹ค.

๊ทธ ๊ฒฐ๊ณผ ํ†ต๊ณผ!!!!
๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ ํ’€ ๋•Œ๋งˆ๋‹ค ๋‚ฏ์„ค๊ณ  ์–ด๋ ต๋‹ค๐Ÿ˜ฅ

 

ํ—คํ—ค 6์ ๐Ÿ˜˜

 

 

 

๋Œ“๊ธ€