Beakjoon&프로그래머스/Java

[프로그래머스/Java] 정수를 나선형으로 배치하기

현장 2025. 2. 14. 19:55

-Code

class Solution {
    public int[][] solution(int n) {
        int[][] answer = new int[n][n];
        int y = 0, x = 0;
        int[] dy = {0, 1, 0, -1};
        int[] dx = {1, 0, -1, 0};
        int temp_y, temp_x;
        int num = 1;
        int idx = 0;

        while (num <= n * n) {
            answer[y][x] = num++;
            temp_y = y + dy[idx];
            temp_x = x + dx[idx];

            if (temp_y < 0 || temp_x < 0 || temp_y >= n || temp_x >= n
                    || answer[temp_y][temp_x] != 0
            ) {
                idx = (idx + 1) % 4;
            }
            y += dy[idx];
            x += dx[idx];
        }

        return answer;
    }
}

dx, dy까지는 생각했으나 temp를 만드는 것을 생각 안하고 있다가 해당 부분을 질문을 통해 알고 해결 했지만 아쉬웠던 문제였습니다.