Coding Test/[프로그래머스] Java

[프로그래머스 / Java, Python] Lv.0 캐릭터의 좌표

annovation 2025. 10. 16. 09:19

Question

https://school.programmers.co.kr/learn/courses/30/lessons/120861?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


Algorithm

  1. 보드의 크기(board[0], board[1])로부터 이동 가능한 최대 / 최소 좌표 계산
    • x좌표 최대 크기 : xMax = (board[0] - 1) / 2
    • x좌표 최소 크기 : xMin = -xMax
    • y좌표 최대 크기 : yMax = (board[1] - 1) / 2
    • y좌표 최소 크기 : yMin = -yMax
  2. 입력 명령 처리 (Key Input 탐색)
    • 향상된 for문을 사용해 문자열 배열 keyinput을 앞에서부터 순서대로 읽는다
  3. 이동 가능 여부 판단 (보드 범위 체크)
    • 현재 좌표가 보드 경계를 벗어나지 않는 경우에만 이동 수행

Code

💡 Java

class Solution {
    public int[] solution(String[] keyinput, int[] board) {

        int[] result = new int[2];
    
        // x좌표의 최댓값
        int xMax = (board[0] - 1) / 2;

        // x좌표의 최소값
        int xMin = ((board[0] - 1) / 2) * - 1;

        // y좌표의 최댓값
        int yMax = (board[1] - 1) / 2;

        // y좌표의 최소값
        int yMin = ((board[1] - 1) / 2) * - 1;

        for (String key : keyinput) {
            if (key.equals("up") && result[1] < yMax) { 
                result[1]++;
            } else if (key.equals("down") && result[1] > yMin) {
                result[1]--;
            } else if (key.equals("left") && result[0] > xMin) {
                result[0]--;
            } else if (key.equals("right") && result[0] < xMax) {
                result[0]++;
            }
        }
        return result;
    }
}

 

💡 Python

def solution(keyinput, board):
    result = [0, 0]

    # x좌표의 최댓값과 최솟값
    x_max = (board[0] - 1) // 2
    x_min = -x_max

    # y좌표의 최댓값과 최솟값
    y_max = (board[1] - 1) // 2
    y_min = -y_max

    for key in keyinput:
        if key == "up" and result[1] < y_max:
            result[1] += 1
        elif key == "down" and result[1] > y_min:
            result[1] -= 1
        elif key == "left" and result[0] > x_min:
            result[0] -= 1
        elif key == "right" and result[0] < x_max:
            result[0] += 1

    return result