package graph;
import java.util.Scanner;
public class Main {
static int[] dr = { 0, 1, 0, -1 };
static int[] dc = { 1, 0, -1, 0 };
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int t = 1; t <= T; t++) {
int N = sc.nextInt();
int[][] nums = new int[N][N];
int dir = 0;
int r = 0, c = 0;
for (int i = 1; i <= N * N; i++) {
nums[r][c] = i;
if (r + dr[dir] >= N || r + dr[dir] < 0 || c + dc[dir] >= N || c + dc[dir] < 0
|| nums[r + dr[dir]][c + dc[dir]] != 0) {
dir = (dir + 1) % 4;
}
r += dr[dir];
c += dc[dir];
}
System.out.println("#" + t);
for (int i = 0; i < N; i++) {
for (int n : nums[i])
System.out.print(n + " ");
System.out.println();
}
}
}
}
- n을 입력받고 n*n크기의 배열 생성
- 0, 0에서부터 인덱스를 채워나가면서 배열의 크기를 벗어나거나, 이미 숫자가 입력되어 있으면 방향 전환