2016. 09. 04. Sun. 정보처리산업기사 실기 알고리즘
배열11 마방진(Magic Square)
1. 시작 위치를 선정
행은 1행부터!! 열은 가운데 열부터!!
row = 0; col=n/2;
2. 다음 숫자가 올 위치에 대한 규칙을 정한다.
입력 될 숫자가 n의 배수일 때는 행만 1증가한다. 마지막 행일때는 맨 위로 돌아간다.
if(num%n==0){row++;
if(row>=n)row=0;}
일력 될 숫자가 n의 배수가 아닐때는 행은 1감소, 열은 1증가.
첫 행일 때는 맨 밑으로 이동. 마지막 열일때는 첫 열로 돌아간다.
else{row--;col++;
if(row<0)row=n-1;
if(col>=n)col=0;}
예제
package example;
class Example{
int n = 7;
int row,col;
public void magicSquare(){
int array[][] = new int [n][n];
System.out.println("\n배열11 마방진(Magic Square)");
row = 0; col=n/2;
for(int num=1; num<=n*n; num++){
array[row][col]=num;
if(num%n==0){row++;
if(row>=n)row=0;
}else{row--;col++;
if(row<0)row=n-1;
if(col>=n)col=0;
}
}
for(int row=0; row<n; row++){
for(int col=0; col<n; col++){
System.out.printf("%3d",array[row][col]);
}
System.out.println();
}
}
}//class
public class Algorism {
public static void main(String[] args) {
Example e = new Example();
e.magicSquare();
}//main
}//class
'IT story > Algorism' 카테고리의 다른 글
배열12 행렬변환 (0) | 2016.10.02 |
---|---|
배열10 대각선으로 채우기 (0) | 2016.09.04 |
배열9 달팽이 만들기 (0) | 2016.09.04 |
배열8 90도 회전하기 (0) | 2016.09.04 |
배열7 이등변 삼각형 만들기 (0) | 2016.09.04 |