min's devlog
5x5 마방진 본문
5x5 마방진의 규칙
- 중간 열에서 시작
- 오른쪽 대각선 상향 방향으로 진행
- 행이 0배열을 벗어나면 마지막 행으로
- 열이 5열을 벗어나면 첫번째 열로
- 5의 배수일 경우 +1 행만 이동
- SQ(R,C(행,열))
코드
public class Mabangjin {
public Mabangjin(int num) {
start(num);
}
int[][] mabang;
public void start(int num) {
mabang = new int[num][num];
int x = 0;
int y = num/2;
mabang[x][y] = 1;
for(int pos=2; pos<=num*num; pos++) {
if(x<0) {
if(y<0) {
x=x+2;
y=y+1;
}else{
x=x+num;
}
}else{
if(y<0) {
y=y+num;
}else {
if(mabang[x][y]!=0){
x=x+2;
y=y+1;
}
}
}
mabang[x][y] = pos;
}
for(int[] first : mabang) {
for(int value : first) {
System.out.print("["+value+"]"+" ");
}
System.out.println();
}
}
}
- for(int pos=2; pos<=num*num; pos++) 에서
먼저 왼쪽 대각선위로 먼저 이동시킴
x= x-1;
y= y-1;
- 위치(x,y) 이동 후 위로 벗어나는 경우; x<0
- 위치(x,y) 이동 후 왼쪽으로 벗어나는 경우; y<0
- 위치(x,y) 이동 후 북서쪽으로 벗어나는 경우; x<0 and y<0
- 위치(x,y) 이동 후 배열을 벗어나지는 않지만 이동한 위치가 이미 다른값이 있을 경우 : mabang[x][y] !=0
'til > Algorithm' 카테고리의 다른 글
[구현] 왕실의 나이트 (0) | 2022.07.05 |
---|---|
[완전 탐색] 시각 문제 (0) | 2022.07.05 |
회장 선거 (0) | 2021.07.31 |
[Two pointers] 연속된 자연수의 합 (0) | 2021.07.30 |
연속부분수열 (0) | 2021.07.30 |
Comments