코딩테스트/Programmers

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

grove1212 2025. 1. 22. 12:24

- 그래프일 때는 dc, dr 사용하기. 다음에 갈 위치를 검사할 때는 nc, nr 사용하기.

        int dir = 0;
        int []di = {0, 1, 0, -1};
        int []dj = {1, 0, -1, 0};

 

class Solution {
    public int[][] solution(int n) {
        int[][] answer = new int[n][n];
        
        int i = 0;
        int j = 0;
        int dir = 0;
        int []di = {0, 1, 0, -1};
        int []dj = {1, 0, -1, 0};
        int number = 1;
        
        while(number<= n*n){
            answer[i][j] = number++;
            
            int ni = i + di[dir];
            int nj = j + dj[dir];
            
            if(ni < 0 || ni >= n || nj < 0 || nj >= n || answer[ni][nj] != 0){
                dir = (dir + 1) % 4;
            }
            
            i += di[dir];
            j += dj[dir];
            

        }
        return answer;
    }
    
}

 

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