본문 바로가기

프로그래머스(Java)/Level 0

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

728x90

코드 힌트

  1. 좌표 제한 계산
    • board 배열을 사용하여 이동 범위를 계산합니다. board[0]과 board[1]는 보드의 크기를 나타내며, 이를 바탕으로 보드의 중앙에서 이동할 수 있는 최대 범위를 계산합니다. 이 계산은 좌표의 제한을 결정하는 데 필요합니다.
  2. 키 입력 처리
    • keyinput 배열을 순회하며 각 키 입력에 따라 좌표를 업데이트합니다. 각 방향(왼쪽, 오른쪽, 위, 아래)에 대한 조건을 체크하고, 이동 가능한 범위 내에서 좌표를 조정합니다.
  3. 좌표 업데이트
    • 각 방향으로 이동 시 현재 좌표가 설정된 범위 내에 있는지 확인합니다. 범위를 벗어나지 않도록 조건문을 사용하여 좌표를 조정합니다.

 

 


정답은 더보기 클릭

더보기
class Solution {
    public int[] solution(String[] keyinput, int[] board) {
        // 결과를 저장할 배열을 초기화합니다. 
        // 결과 배열은 [x좌표, y좌표]를 저장합니다.
        int[] result = new int[2];
        
        // 보드의 가로, 세로 크기를 기준으로 좌표의 제한 범위를 계산합니다.
        // 보드는 중앙이 (0, 0)으로 설정되어 있으며, 각 방향으로 이동할 수 있는 최대 거리를 계산합니다.
        int n = (board[0] - 1) / 2; // 가로 방향 이동 범위
        int m = (board[1] - 1) / 2; // 세로 방향 이동 범위
        
        // 주어진 키 입력에 따라 이동을 처리합니다.
        for (String key : keyinput) {
            if (key.equals("left") && result[0] - 1 >= -n) {
                // 왼쪽으로 이동, x좌표를 감소시키고, 제한 범위를 체크합니다.
                result[0]--;
            } else if (key.equals("right") && result[0] + 1 <= n) {
                // 오른쪽으로 이동, x좌표를 증가시키고, 제한 범위를 체크합니다.
                result[0]++;
            } else if (key.equals("down") && result[1] - 1 >= -m) {
                // 아래로 이동, y좌표를 감소시키고, 제한 범위를 체크합니다.
                result[1]--;
            } else if (key.equals("up") && result[1] + 1 <= m) {
                // 위로 이동, y좌표를 증가시키고, 제한 범위를 체크합니다.
                result[1]++;
            }
        }
        
        // 결과 배열을 반환합니다.
        return result;
    }
}
728x90