캐릭터의 좌표 [CT]

성배·2025년 1월 25일
0

코딩테스트

목록 보기
37/53

머쓱이는 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 함수를 완성해주세요.

생각한 풀이
1. keyinput 값들을 equals로 방향을 확인
2. 방향에 맞게 값을 더하고 빼준다
3. 계산이 끝난 값이 board/2 의 값을 넘는다면 board/2 값으로 변경한다


class Solution {
    public int[] solution(String[] keyinput, int[] board) {
        int answer[]= new int[2];
        int xr=board[0]/2;
        int yr=board[1]/2;
        int x=0;
        int y=0;
        for(String s:keyinput){
            if(s.equals("left")){
                x--;
            }else if(s.equals("right")){
                x++;
            }else if(s.equals("up")){
                y++;
            }else if(s.equals("down")){
                y--;
            }
            
            if (x > xr) x = xr;
            if (x < -xr) x = -xr;
            if (y > yr) y = yr;
            if (y < -yr) y = -yr;
        }
        
        answer[0]=x;
        answer[1]=y;
        return answer;
    }
}

🐴 풀이
1. board의 x,y 좌표 값으 범위를 xr,xy에 넣는다 (int로 받아서 정수로 떨어진다)
2. keyinput 값이 left, right, up, down 인지 확인한다
3. 해당 값에 따른 x,y 값을 더하고 빼준다
4. x,y 값을 음수인지 양수인지, xr,yr을 넘는지 확인하고 넘는다면 xr,yr을 x,y에 넣어준다

0개의 댓글