본문 바로가기
IT/JAVA

[55일차] JAVA 알고리즘 문제풀이 05

by GWLEE 2022. 9. 7.

마방진

 

MagicMain.java

package com.gyuone.exam01;

public class MagicMain {
	public static void main(String[] args) {
		int[][] a = new int[5][5];
		MagicSquare square = new MagicSquare(a);
		printSquare(square.getSquare());
	}
	
	
	
	public static void printSquare(int[][] arr) {
		for(int i = 0; i < arr.length; i++) {
			for(int k = 0; k < arr[i].length; k++) {
				System.out.printf("%2d ", arr[i][k]);
			}
			System.out.println();
		}
	}
}

 

MagicSquare.java

package com.gyuone.exam01;

public class MagicSquare {
	private int[][] arr;

	public MagicSquare(int[][] arr) {
		this.arr = arr;
	}

	public int[][] getSquare() {
		int row = arr.length - 1; // 1
		int col = arr.length / 2; // 3
		int max = arr.length - 1;

		arr[row][col] = 1;

		for (int i = 2; i <= arr.length * arr.length; i++) {
			if ((col + 1) > max && (row + 1) > max) {
				row--;
			} else if ((col + 1) > max) {
				col = 0;
				row++;

			} else if ((row + 1) > max) {
				row = 0;
				col++;
			} else {
				row++;
				col++;
			}
			if(arr[row][col] != 0) {
				row -= 2;
				col--;
			}
			arr[row][col] = i;
		}
		return arr;
	}
}

댓글