https://www.youtube.com/watch?v=ATx3AYTyZl4
(0, n /2) 에서 시작 (선택 사항)
↗방향(행 - 1, 열 + 1)으로 이동
Underflow/Overflow라면?
행이 0 이하? 마지막 열으로
열이 5 이상? 첫번째 열로
(예외 사항) 값이 n의 배수일 경우 +1 행으로 이동
// 5로 예시
int n = 5;
int[][] square = new int[n][n];
int i = 0;
int j = n / 2;
for (int num = 1; num <= n * n; num++) {
square[i][j] = num;
// 배수인가?
if (num % n == 0) {
// n의 배수일 경우 +1 행으로 이동
// i가 overflow 되는 경우 고려
i = ++i % n;
} else {
i--;
j++;
// 행이 0열을 벗어나면 마지막 행으로
if (i < 0) {
i = n - 1;
}
// 열이 5열을 벗어나면 첫번째 열로
if (j >= n) {
j = 0;
}
}
}