#include<stdio.h>
int main() {
int map[105][105] = {0};
int d[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
// 4*2 크기의 2차원 배열은 변수의 값 변환을 위한 배열이다
int i, n, x=1, y=1, k=1, j, p=0;
int dx, dy;
// 위치 지정을 위한 변수
scanf("%d", &n);
for(i=0; i<n+2; i++) {
for(j=0; j<n+2; j++) {
if(i==0 || j==0 ||i==n+1 || j==n+1) {
map[i][j] = 9;
// n이 3이라면 5*5 크기의 배열의 겉 면이 0이 아닌 수가 된다
}
}
}
// 9 9 9 9 9
// 9 0 0 0 9
// 9 0 0 0 9
// 9 0 0 0 9
// 9 9 9 9 9 안의 3*3 크기의 배열을 제외한 모든 배열의 수가 0이 아닌 수가 되었다
map[x][y] = k++;
for(i=0; i<n*n-1; i++) {
dx = d[p][0];
dy = d[p][1];
//
if(map[x+dx][y+dy] == 0) {
x += dx;
y += dy;
map[x][y] = k++;
//
}
else {
p++;
p%=4;
i--;
}
}
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) {
printf("%2d ", map[i][j]);
}
printf("\n");
}
return 0;
}
//코드 해석 해오기