= 마방진 = * 관련 문제 : https://www.hackerrank.com/challenges/magic-square-forming == 홀수 차수 == 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++; } else { i--; j++; // 행이 0열을 벗어나면 마지막 행으로 if (i < 0) { i = n - 1; } // 열이 5열을 벗어나면 첫번째 열로 if (j >= n) { j = 0; } } } == 짝수 차수 == https://www.youtube.com/watch?v=aAW86HKBarY * n = 4k * n = 4k + 2 두 가지 경우가 있다