본문 바로가기

Java/프로그래머스

[JAVA] 프로그래머스 - 캐릭터의 좌표

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

- up,down, left, right 방향으로 이동한 결과가 각 세로, 가로 크기와 같다면 세로,가로크기를 return 

정답 

 

class Solution {
    public int[] solution(String[] keyinput, int[] board) {
        int[] answer = {0,0};
        
        int length = board[1]/2; //세로 길이 y 최대값
        int width = board[0]/2; //가로 길이 x 최대값
        
        for(int i=0; i<keyinput.length; i++)
        {
            String cur = keyinput[i];
            
            if(cur.equals("up"))
            {
                if(answer[1]!=length)
                {
                    answer[1] = answer[1]+1;
                }
                else
                {
                    answer[1] = length;
                }
            }
            else if(cur.equals("down"))
            {
                if(answer[1] != (-length))
                {
                    answer[1] = answer[1]-1;
                }
                else
                {
                    answer[1] = (-length);
                }
            }
            else if(cur.equals("right"))
            {
                if(answer[0]!=width)
                {
                    answer[0] = answer[0]+1;
                }
                else
                {
                    answer[0] = width;
                }
                
            }
            else if(cur.equals("left"))
            {
                if(answer[0]!=(-width))
                {
                    answer[0] = answer[0]-1;
                }
                else
                {
                    answer[0] = (-width);
                }
                
            }
            
        }
        return answer;
    }
}

 

 

 

다른 사람의 풀이 

 

class Solution {
    public int[] solution(String[] keyinput, int[] board) {
        int numRow = board[1];
        int numCol = board[0];
        int r = 0;
        int c = 0;
        for (String key : keyinput) {
            switch (key.charAt(0)) {
                case 'l':
                    c = Math.max(-numCol / 2, c - 1);
                    break;
                case 'r':
                    c = Math.min(numCol / 2, c + 1);
                    break;
                case 'd':
                    r = Math.max(-numRow / 2, r - 1);
                    break;
                case 'u':
                    r = Math.min(numRow / 2, r + 1);
                    break;
            }
            System.out.println(r + " " + c);
        }
        return new int[]{c, r};
    }
}

 

 

class Solution {
    public int[] solution(String[] keyinput, int[] board) {
         int[] answer = {0 ,0};
        int width = board[0]/2;
        int height = board[1]/2;
        for(String input: keyinput) {
            if(input.equals("up") &&  answer[1] < height) {
                answer[1]++;
            } else if (input.equals("down") && answer[1] > -height) {
                answer[1]--;
            }else if (input.equals("left") && answer[0] > -width) {
                answer[0]--;
            }else if (input.equals("right") && answer[0] < width) {
                answer[0]++;
            }
        }

        return answer;
    }
}