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();
}
}
}