JAVA

[Java] 마방진 알고리즘

대장형아 2023. 11. 3. 17:23
package generic.kepco.com;
import java.util.Scanner;

public class Mabang{
	int num;
	
	public Mabang(int num) {
		this.num = num;
	}
	
	public void MakeMabang() {
		int [][] mabang = new int[num][num];
		int x=0;
		int y=num/2;
		
		mabang[x][y]=1;
		for(int pos =2; pos<=num*num; pos++) {
//			2부터 25까지의 값이 들어갈 2차원 배열의 위치를 찾아야함
//			먼저 왼쪽 대각선 위로 이동
			x = x-1;
			y = y-1;
			
			if(x<0) {
				if(y<0) {
					x=x+2;
					y=y+1;
				}
				else {
					x=x+num;
				}
			}
			else {
				if(y<0) {
					y = y+num;
				}
				else {
					if(mabang[x][y]!=0) {
						x=x+2;
						y=y+1;
					}
				}
			}
			mabang[x][y]=pos;
		}
		
		for (int[] temp:mabang) {
			for(int value:temp) {
				System.out.print(value+" ");
			}
			System.out.println();
		}
		
	}
	
	public static void main(String[] args) {
		try (Scanner scanner = new Scanner(System.in)) {
			System.out.print("num 값 입력: ");
			String inputNum = scanner.nextLine();
			int num = Integer.parseInt(inputNum);
			
			Mabang mb = new Mabang(num);
			mb.MakeMabang();
		} catch (NumberFormatException e) {
			
			e.printStackTrace();
		}
	}
}