Bigfat

[Java 예제] 홀수 마방진(a magic square of odd order) 본문

Java

[Java 예제] 홀수 마방진(a magic square of odd order)

kyou 2017. 2. 11. 22:52

자바로 콘솔에 홀수 마방진을 출력해보자


마방진 원리, 마방진 만드는 법, 마방진 푸는 법

간단하게 구현하기 위해 조건이 많은 홀수 마방진 소스다.

시작(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' 카테고리의 다른 글

[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