1. ๋ด ์ฝ๋
import java.util.*;
class Solution
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int test_case = 1; test_case <= T; test_case++) {
int N = sc.nextInt();
int [][] snail = new int[N][N]; // ๋น ๋ฐฐ์ด ์์ฑ
fill(snail, N, 1, 0); // ๋ฐฐ์ด์ ๋ฌํฝ์ด ๋ชจ์์ผ๋ก ๋ด๊ธฐ
System.out.println("#"+test_case); // ์ถ๋ ฅ
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.printf("%d ", snail[i][j]);
}
System.out.println();
}
}
}
static void fill (int[][] arr, int N, int num, int L) { // ๋ฌํฝ์ด ๋ชจ์์ผ๋ก ์ฑ์ธ ๋ฐฐ์ด, num์ ๋ํด์ง ๊ฐ, L์ Loop ๋์๊ฐ ํ์
// ๋งจ ์ ๊ฐ๋ก
for (int i = 0; i < N; i++) {
arr[L][i+L] = num++;
}
// ๋งจ ์ค๋ฅธ์ชฝ ์ธ๋ก
for (int i = 1; i < N; i++) {
arr[i+L][N-1+L] = num++;
}
// ๋งจ ๋ฐ ๊ฐ๋ก
for (int i = N-2; i >= 0 ; i--) {
arr[N-1+L][i+L] = num++;
}
// ๋งจ ์ผ์ชฝ ์ธ๋ก
for (int i = N-2; i >= 1; i--) {
if(i-L <0) continue;
arr[i+L][L] = num++;
}
// N์ด ์ง์์ธ๋ฐ, N-2๊ฐ ์กด์ฌํ๋ค๋ฉด, ์ฌ๊ท๋ก ๊ฐ๋ค. (๋ฌํจ์๋ก ์ฑ์ธ ๋, N-2 ์ฉ ์ค์ด๋ ๋ค.)
if(N%2 == 0 && N-2 >0){
fill(arr, N-2, num, ++L);
}
// N์ด ํ์์ธ๋ฐ, N-2๊ฐ ์กด์ฌํ๋ค๋ฉด, ์ฌ๊ทํ๋ค.
else if (N%2==1 && N-2>1) {
fill(arr, N-2, num, ++L);
}
//๋งจ ๋ง์ง๋ง ๋ณ๋๋ฆฌ๊น์ง ์ฑ์ฐ๊ณ , ์ฑ์์ผํ ๊ฒ์ด ํ๋๋ง ๋จ์๋ค๋ฉด ์ค์๋ง ์ฑ์ฐ๊ธฐ
else if (N-2 ==1) {
arr[++L][L] = num;
// ๋ค ์ฑ์ ์ผ๋ฉด ํจ์๋ฅผ ๋๋ด๋ผ
} else if (N-2 == 0) {
return;
}
}
}
0