본문 바로가기
CodeSignal

spiralNumbers

by Doromi 2024. 1. 17.
728x90
반응형

N x N 크기의 2D 배열을 나선형 순서로 채우는 것입니다. 배열은 왼쪽 위에서 시작하여 시계 방향으로 나선형으로 숫자를 배치합니다.

int[][] solution(int n) {
    int[][] matrix = new int[n][];
    for(int i = 0;i<n;i++){
        matrix[i] = new int[n];
    }
    int num = 1;
    int top = 0, bottom = n-1, left = 0, right = n-1;
    
    while(num <= n* n){
        for(int i = left;i<=right;i++){
            matrix[top][i] = num++;
        }
        top++;
        for(int i = top;i<=bottom;i++){
            matrix[i][right] = num++;
        }
        right--;
        for(int i = right;i>=left;i--){
            matrix[bottom][i] = num++;
        }
        bottom--;
        for(int i = bottom;i>=top;i--){
            matrix[i][left] = num++;
        }
        left++;
    }
    return matrix;
}
나선형으로 배열을 채우기 위해 상, 하, 좌, 우의 경계를 설정하고, 각 방향으로 순차적으로 숫자를 채워 넣습니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

Circle of Numbers  (0) 2024.02.05
Sudoku  (0) 2024.01.31
messageFromBinaryCode  (1) 2024.01.14
File Naming  (0) 2024.01.13
Count pairs in array whose sum is divisible by K  (0) 2024.01.10