[Java 예제] 홀수 마방진(a magic square of odd order)
2017. 2. 11. 22:52ㆍJava
자바로 콘솔에 홀수 마방진을 출력해보자
간단하게 구현하기 위해 조건이 많은 홀수 마방진 소스다.
시작(1)은 첫 번째 줄 중앙부터 시작하도록 하였다.
1부터 시작해 10시 방향(↖)으로 2차원 배열을 채워나간다.
향상된 for문과 2차원 배열을 익히기 좋은 예제다.
마방진은 짝수와 홀수의 풀이법이 다르므로 짝수 마방진은 다음 기회에...
public class MagicSquare {
public void drawMagicSquare(int size) { // Parameter: 마방진의 크기
int[][] ms = new int[size][size];
int center = size / 2;
int x = 0;
int y = center;
ms[x][y] = 1;
if((size % 2) == 1) {
for(int num = 2; num < size*size + 1; num++) {
x -= 1;
y -= 1;
if(x < 0) {
if(y < 0) {
x += 2;
y += 1;
} else {
x += size;
}
} else {
if(y < 0) {
y += size;
} else {
if(ms[x][y] != 0) {
x += 2;
y += 1;
}
}
}
ms[x][y] = num;
}
for(int[] i : ms) {
for(int j : i) {
System.out.print(j + "\t");
}
System.out.println();
}
} else {
System.out.println("홀수만 입력하시오.");
}
}
}
'Java' 카테고리의 다른 글
| [Spring] Migrating from HttpClient 4 to HttpClient 5 (for self-signed certificates) (0) | 2024.12.04 |
|---|---|
| [Java] 데이터베이스 연동하기 (0) | 2017.02.23 |
| [Java 예제] 채팅(chatting) (2) | 2017.02.22 |
| [Java 예제] 로또(a lottery) (0) | 2017.02.13 |
| [Java 예제] 다이아몬드(a diamond) (0) | 2017.02.11 |