목차
문제분석
프로그램설계 알고리즘
소스코드
결과분석
소감
프로그램설계 알고리즘
소스코드
결과분석
소감
본문내용
지정한다.
for문을 이용하여 정해진 위치 에 1부터 값을 채워 넣는다.
값이 size의 배수인지 확인
배수이면 행의 위치+1을 하며
배수가 아닐시 행,열 -1을 각각 해준다.
행의값(a)이 0보다 작을시 마지막 행으로 이동
열의 값(b)이 주어진 범위보다 클 경우 첫열로 이동.
for문을 이용하여 값을 n*n의형태로 출력시킨다.
소스코드
import java.io.*;
public class Ex2 {
public static void main(String[] arg) throws java.io.IOException{
int size, i ,cont=1;//size=마방진 크기 i,cont = while문에서 사용할 변수
int a,b;//배열의 위치로 사용할 변수
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 입력받은 수를 저장할 버퍼 생성
System.out.println("마방진의 크기를 홀수만 입력하세요." );
size = Integer.parseInt(br.readLine());//마방진 크기를입력 받는 부분
System.out.println(size+"by"+size+" 마방진");
i=size;
int[][] arr= new int[size][size];//입력 받은 크기로 배열 생성
for(a=0,b=(size-1)/2 ; cont<(size*size+1);cont++){
//for 문을 이용 마방진조건 에 맞는 위치에 수를 차례로 입력
arr[a][b]=cont; //첫행 중앙의 열부터 수를 채워 넣는다.
if(((cont+size)%size)==0)++a; //size의 배수이면 행을 아래로 내린다.
else { //그렇치 않은경우는 우측 위 대각선으로 숫자를 채워넣는다.
--a;
++b;
}
if(a<0)a=size-1;
//만약 다음 입력의 위치가 첫행보다 위에 일때 마지막 행으로 입력 위치를 보낸다.
if(b>size-1)b=0;//다음 입력의 위치가 열의 끝일때는 첫열로 입력할 위치를 옮긴다.
}
for(a=0;a
System.out.println();
for(b=0;b
System.out.print(arr[a][b]+" ");
}
}
}
결과분석
홀수인 7을 입력하여 보았다. 7by7의 마방진이 출력 됐으며 어느 방향으로 더하던지 모두 175가 되는 것을 확인할수있었고, 정상적으로 프로그램이 실행되었음을 알수있다.
9by9 마방진도 출력 해보았고 이도 이상없이 출력 되는것을 확인할수있엇다.
소감
이번 마방진 과제는 어떤식으로 문제를 풀어야할지 처음엔 막막했다. 마방진의 특성과 어떤식으로 알고리즘을 짜야 할지 생각하는데 시간이 좀 걸렸으며 처음 완성하여 막상 실행을 시키는 과정에서도 오류가 몇 번 나와서 시간이 오래 걸렸다. 하지만 알고리즘을 확실히 이해 하고 몇 번 수정작업을 한 끝에 완성할수있었고, 오래 걸린만큼 완성된후 기분이 더 좋았다.
for문을 이용하여 정해진 위치 에 1부터 값을 채워 넣는다.
값이 size의 배수인지 확인
배수이면 행의 위치+1을 하며
배수가 아닐시 행,열 -1을 각각 해준다.
행의값(a)이 0보다 작을시 마지막 행으로 이동
열의 값(b)이 주어진 범위보다 클 경우 첫열로 이동.
for문을 이용하여 값을 n*n의형태로 출력시킨다.
소스코드
import java.io.*;
public class Ex2 {
public static void main(String[] arg) throws java.io.IOException{
int size, i ,cont=1;//size=마방진 크기 i,cont = while문에서 사용할 변수
int a,b;//배열의 위치로 사용할 변수
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 입력받은 수를 저장할 버퍼 생성
System.out.println("마방진의 크기를 홀수만 입력하세요." );
size = Integer.parseInt(br.readLine());//마방진 크기를입력 받는 부분
System.out.println(size+"by"+size+" 마방진");
i=size;
int[][] arr= new int[size][size];//입력 받은 크기로 배열 생성
for(a=0,b=(size-1)/2 ; cont<(size*size+1);cont++){
//for 문을 이용 마방진조건 에 맞는 위치에 수를 차례로 입력
arr[a][b]=cont; //첫행 중앙의 열부터 수를 채워 넣는다.
if(((cont+size)%size)==0)++a; //size의 배수이면 행을 아래로 내린다.
else { //그렇치 않은경우는 우측 위 대각선으로 숫자를 채워넣는다.
--a;
++b;
}
if(a<0)a=size-1;
//만약 다음 입력의 위치가 첫행보다 위에 일때 마지막 행으로 입력 위치를 보낸다.
if(b>size-1)b=0;//다음 입력의 위치가 열의 끝일때는 첫열로 입력할 위치를 옮긴다.
}
for(a=0;a
for(b=0;b
}
}
}
결과분석
홀수인 7을 입력하여 보았다. 7by7의 마방진이 출력 됐으며 어느 방향으로 더하던지 모두 175가 되는 것을 확인할수있었고, 정상적으로 프로그램이 실행되었음을 알수있다.
9by9 마방진도 출력 해보았고 이도 이상없이 출력 되는것을 확인할수있엇다.
소감
이번 마방진 과제는 어떤식으로 문제를 풀어야할지 처음엔 막막했다. 마방진의 특성과 어떤식으로 알고리즘을 짜야 할지 생각하는데 시간이 좀 걸렸으며 처음 완성하여 막상 실행을 시키는 과정에서도 오류가 몇 번 나와서 시간이 오래 걸렸다. 하지만 알고리즘을 확실히 이해 하고 몇 번 수정작업을 한 끝에 완성할수있었고, 오래 걸린만큼 완성된후 기분이 더 좋았다.
추천자료
[국제경영우수레포트] 글로벌 경기 침체 원인과 대처 방안
비버리지보고서레포트
★추천레포트★[부동산 대책] 이명박 정부의 부동산 대책에 대한 분석과 문제점 및 부동산 정책...
사회복지학개론레포트
서비스마케팅기말레포트
기업윤리레포트(권리와의무)
핀란드레포트
경제 레포트
생활한방 레포트 - 역의학의 정의, 음양학설, 오행학설, 만리의학 책
북한사회론 레포트
미용학개론 레포트
[★★추천레포트★★, 투자전략과 성공사례] 포스코의 각국별 투자사례 분석과 전략·방법 및 산업...
조직행동론 레포트 - 스트레스 관리의 필요성 (오토에버 시스템즈, 시스코, 사우스웨스트 항공)
[레포트]CSR 활동의 긍정적인 영향에 관한 연구