IT story/Algorism

배열11 마방진(magic square)

jason719 2016. 9. 4. 18:47

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