Table of Contents

마방진

홀수 차수

https://www.youtube.com/watch?v=ATx3AYTyZl4

  1. (0, n /2) 에서 시작
  2. ↗방향(행 - 1, 열 + 1)으로 이동
  3. Underflow/Overflow라면?
    • 행이 0 이하? 마지막 열으로
    • 열이 5 이상? 첫번째 열로
  4. (예외 사항) 값이 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

두 가지 경우가 있다