자료구조 개념을 이용한 마방진(매직스퀘어)구현
- 최초 등록일
- 2010.09.20
- 최종 저작일
- 2009.09
- 6페이지/ 한컴오피스
- 가격 1,500원
소개글
자료구조 개념을 이용한 마방진(매직스퀘어)구현하기
목차
1.문제제기
2.문제분석
3.프로그래밍소스
4.결과화면
5.느낀점
본문내용
1 - (1). 문제제기 :
매직스퀘어를 구현한다. 마방진이라고도 하는데, 정사각형의 1변에 나열된 수의 개수 n에 따라서 n방진을 구성한다. 이 문제에서는 n이 홀수일 경우만으로 제한한다. 개의 수를 가로, 세로, 대각선 방향의 수를 더하면 모두 같은 값이 나오도록 n by n 행렬에 배열한 것이다. 일반적으로 마방진의 각 칸에는 1부터 까지 수가 한 개씩 들어간다.
2. 문제분석 :
n값을 입력받았을 때, n by n의 행렬을 생성한다. 이때 n은 홀수 값만을 받도록 예외처리를 해야 한다. 마방진 안에는 1부터 까지 숫자가 한 번씩 들어간다. 이때 숫자가 채워지는 규칙이 있다. 이 규칙을 이용하여 n차 마방진을 생성한다.
① (0, n/2)의 위치에 1을 대입한다. n/2는 정수부분만 계산된다.
② 현 위치에서 행과 열을 모두 1씩 감소시킨 (row-1, column-1)위치로 이동한다.
③ 그 위치에 2를 대입한다.
④ 다시 ②의 과정을 반복하여, 그 위치에 3, 4... 숫자를 증가시켜가며 대입한다.
⑤ 만약, 그 위치에 이미 숫자가 채워져 있다면, 아래로 내려가 대입하고, ②로 간다.
⑥ 만약, 행의 범위가 (0~Size-1)을 벗어난다면, 중심축을 기준으로 행을 대칭시킨다.
⑦ 마찬가지로, 열의 범위가 (0~Size-1)을 벗어나면, 중심축을 기준으로 반대편에 대입.
⑧ 특별히, (0,0)의 경우 ②의 규칙을 사용하면 (-1,-1)이 되므로, 예외적으로 (1,0)처리.
⑨ 대입하던 key값이 에 이르면, 반복을 중단한다.
참고 자료
없음