Algorithm
n*n배열을 숫자로 위아래로 반복하며 S자 모양으로 채우기
by BeGeek
2015. 4. 9.
n 길이를 지정하면 n*n크기 배열에 숫자를 위아래로 반복하며 S자 모양으로 채우기
NumberSshape.java
public class NumberSshape {
/** * NumberSshape * n*n배열을 숫자로 위아래로 반복하며 S자 모양으로 채우기 * * 1 10 11 20 21 * 2 9 12 19 22 * 3 8 13 18 23 * 4 7 14 17 24 * 5 6 15 16 25 * **/ int [][] map; //숫자를 채울 배열 int n = 5; //배열길이 int cnt = 1; //채울 숫자 //생성자 public NumberSshape(){ map = new int[n][n]; } //숫자 채우기 public void numberFill(int a, int b){ while(true){ if(a < n){ while(a < n){ map[a++][b] = cnt++; } }else if(a == n){ //마지막행 왔을때 열 우측 이동 b++; while(a > 0){ map[--a][b] = cnt++; } //처음행 왔을때 열 우측 이동 if(a == 0 )b++; } //마지막 좌표가 0에서 숫자로 채워지면 끝 if(map[n-1][n-1] != 0)return; } } //map출력 public void printMap(){ for(int i=0; i < map.length; i++){ for(int j=0; j < map[0].length; j++){ System.out.printf("%3d",map[i][j]); if(j == map[0].length-1){ System.out.println(); } } } } //실행 public static void main(String[] args) {
NumberSshape nss = new NumberSshape(); nss.numberFill(0,0); nss.printMap(); }
}
|
출력결과
1 10 11 20 21 2 9 12 19 22 3 8 13 18 23 4 7 14 17 24 5 6 15 16 25 |
댓글