Teddy Bear Holding A Heart Balloon [์ž…๋ฌธ] ์บ๋ฆญํ„ฐ์˜ ์ขŒํ‘œ
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿฅ‡ Coding Test/์˜ค๋‹ต๋…ธํŠธ

[์ž…๋ฌธ] ์บ๋ฆญํ„ฐ์˜ ์ขŒํ‘œ

https://school.programmers.co.kr/learn/courses/30/lessons/120861

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

[ ๋ฌธ์ œ์„ค๋ช… ]

๋จธ์“ฑ์ด๋Š” RPG๊ฒŒ์ž„์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„์—๋Š” updownleftright ๋ฐฉํ–ฅํ‚ค๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฐ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์œ„, ์•„๋ž˜, ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [0,0]์—์„œ up์„ ๋ˆ„๋ฅธ๋‹ค๋ฉด ์บ๋ฆญํ„ฐ์˜ ์ขŒํ‘œ๋Š” [0, 1], down์„ ๋ˆ„๋ฅธ๋‹ค๋ฉด [0, -1], left๋ฅผ ๋ˆ„๋ฅธ๋‹ค๋ฉด [-1, 0], right๋ฅผ ๋ˆ„๋ฅธ๋‹ค๋ฉด [1, 0]์ž…๋‹ˆ๋‹ค. ๋จธ์“ฑ์ด๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐฉํ–ฅํ‚ค์˜ ๋ฐฐ์—ด keyinput์™€ ๋งต์˜ ํฌ๊ธฐ board์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ๋Š” ํ•ญ์ƒ [0,0]์—์„œ ์‹œ์ž‘ํ•  ๋•Œ ํ‚ค ์ž…๋ ฅ์ด ๋ชจ๋‘ ๋๋‚œ ๋’ค์— ์บ๋ฆญํ„ฐ์˜ ์ขŒํ‘œ [x, y]๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

board์€ [๊ฐ€๋กœ ํฌ๊ธฐ, ์„ธ๋กœ ํฌ๊ธฐ] ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

board์˜ ๊ฐ€๋กœ ํฌ๊ธฐ์™€ ์„ธ๋กœ ํฌ๊ธฐ๋Š” ํ™€์ˆ˜์ž…๋‹ˆ๋‹ค.

board์˜ ํฌ๊ธฐ๋ฅผ ๋ฒ—์–ด๋‚œ ๋ฐฉํ–ฅํ‚ค ์ž…๋ ฅ์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

0 ≤ keyinput์˜ ๊ธธ์ด ≤ 50

1 ≤ board[0] ≤ 99

1 ≤ board[1] ≤ 99

keyinput์€ ํ•ญ์ƒ up, down, left, right๋งŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

[ ํ’€์ด ]

class Solution {
    public int[] solution(String[] keyinput, int[] board) {
        int[] answer = {0,0};
        
        for (int i=0; i<keyinput.length; i++) { 
        //์ž„์‹œ๋ณ€์ˆ˜ x,y๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ , ๋ฒ”์œ„์— ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”์ง€ ๊ฒ€์‚ฌ ํ›„
        //answer[0], answer[1]์— ํ• ๋‹น
        
            int x = answer[0]; //x,y์— ํ˜„์žฌ ์ขŒํ‘œ๊ฐ’ ์„ค์ •
            int y = answer[1];
            
            switch (keyinput[i]) { //switch-case๋ฌธ์œผ๋กœ ์ขŒํ‘œ์ด๋™
                case "up" :
                    y += 1;
                    break;
                case "down" :
                    y -= 1;
                    break;
                case "left" :
                    x -= 1;
                    break;
                case "right" :
                    x += 1;
                    break;
            }
            if (Math.abs(x) <= board[0]/2) { //์˜ฎ๊ธด x์ขŒํ‘œ๊ฐ€ boardํฌ๊ธฐ๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด
                 answer[0] = x; //answer[0]์— ํ• ๋‹น
            }
            if (Math.abs(y) <= board[1]/2) { //์˜ฎ๊ธด y์ขŒํ‘œ๊ฐ€ boardํฌ๊ธฐ๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด
                answer[1] = y; //answer[1]์— ํ• ๋‹น
            }
        }
        return answer;
    }
}