2 λΆ„ μ†Œμš”

πŸ“ [D2_1954] λ‹¬νŒ½μ΄ 숫자

import java.util.Scanner;
 
public class Solution {
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
 
        for (int tc = 1; tc <= T; tc++) {
 
            // μž…λ ₯
            int N = sc.nextInt();

            // 수λ₯Ό μ €μž₯ν•  λ°°μ—΄
            int[][] arr = new int[N][N];

            // 수 
            int num = 1;
             

            // μž…λ ₯이 1인 경우 -> '1' 좜λ ₯
            if(N == 1) {
                arr[N-1][N-1] = 1;
            }
 
            // N이 짝수인 경우
            if (N / 2 == 0) {
                for (int j = 0; j < N / 2; j++) {

                    // μœ„μ— κ°€λ‘œ
                    for (int i = j; i < N - (j + 1); i++) {
                        arr[j][i] = num;
                        num++;
                    }
 
                    // 였λ₯Έμͺ½ μ„Έλ‘œ
                    for (int i = j; i < N - (j + 1); i++) {
                        arr[i][N - (j + 1)] = num;
                        num++;
                    }
 
                    // 밑에 κ°€λ‘œ
                    for (int i = N - (j + 1); i > j; i--) {
                        arr[N - (j + 1)][i] = num;
                        num++;
                    }
 
                    // μ™Όμͺ½ μ„Έλ‘œ
                    for (int i = N - (j + 1); i > j; i--) {
                        arr[i][j] = num;
                        num++;
                    }
                }
 
            }
            // N이 ν™€μˆ˜μΈ 경우
            else {
                for (int j = 0; j < N / 2; j++) {
 
                    // μœ„μ— κ°€λ‘œ
                    for (int i = j; i < N - (j + 1); i++) {
                        arr[j][i] = num;
                        num++;
                    }
 
                    // 였λ₯Έμͺ½ μ„Έλ‘œ
                    for (int i = j; i < N - (j + 1); i++) {
                        arr[i][N - (j + 1)] = num;
                        num++;
                    }
 
                    // 밑에 κ°€λ‘œ
                    for (int i = N - (j + 1); i > j; i--) {
                        arr[N - (j + 1)][i] = num;
                        num++;
                    }
 
                    // μ™Όμͺ½ μ„Έλ‘œ
                    for (int i = N - (j + 1); i > j; i--) {
                        arr[i][j] = num;
                        num++;
                    }

                    // λ§ˆμ§€λ§‰ 쀑앙값
                    if (arr[N / 2][N / 2] == 0) {
                        arr[N / 2][N / 2] = N * N;
                    }
                }
            }

            // 좜λ ₯
            System.out.println("#"+ tc);
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < N; j++) {
                    System.out.print(arr[i][j] + " ");
                }
                System.out.println();
            }
        }
 
    }
 
}

πŸ€” λ‚˜μ˜ 생각

μ‚¬κ°ν˜•μ„ ν•œ λ³€μ”© λ‚˜λˆ„μ–΄ 계산해 μ£Όμ—ˆλ‹€.
N이 짝수일 경우, ν™€μˆ˜μΌ 경우 λ‚˜λˆ„μ–΄μ„œ λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ˜€λŠ”λ°,
λ­”κ°€ μž¬κ·€ ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œλ„ ν•  수 μžˆμ„ 것 κ°™λ‹€.
그리고 N이 1인 경우λ₯Ό μ²˜μŒμ— λ†“μΉ˜κ³  ν‹€λ¦°κ²Œ μ’€ 아쉽닀.