[JAVA] 알고리즘 달팽이 배열 - 직사각형 :: 매운코딩
728x90
300x250

직사각형,정사각형 모두 수용되는 형태의 달팽이 배열이다.

왜 늘 기본적인 배열,for문은 오랜만에하면 어려울까..

package algorithm;

public class 달팽이배열 {

	public static void main(String[] args) {
		
		int R = 5, C = 7;
		int[][] map = new int[R][C];
		int num = 1;

		int x = 0;
		int y = -1;
		int flag = 1;
		int width = C;
		int height = R-1;
		while(num<=(R*C)) {
			
			//가로 이동
			for (int i = 0; i < width && num<=(R*C); i++) {
				//y+=flag;
				map[x][++y]=num++;
			}
			width--; 
			
			//세로 이동
			for (int i = 0; i < height && num<=(R*C); i++) {
				//x+=flag;
				map[++x][y]=num++;
			}
			height--;
			
			//가로 이동
			for (int i = 0; i < width && num<=(R*C); i++) {
				//y+=flag;
				map[x][--y]=num++;
			}
			width--;
			
			//세로 이동
			for (int i = 0; i < height && num<=(R*C); i++) {
				//x+=flag;
				map[--x][y]=num++;
			}
			height--;
			
			//flag*=(-1);
		}
		
		
		
		//프린트
		for (int i = 0; i < R; i++) {
			for (int j = 0; j < C; j++) {
				System.out.print(map[i][j] + "\t");
			}
			System.out.println();
		}
		
		
		//fun();
		
	}
  }

 

출력결과

1	2	3	4	5	6	7	
20	21	22	23	24	25	8	
19	32	33	34	35	26	9	
18	31	30	29	28	27	10	
17	16	15	14	13	12	11	

 

728x90

+ Recent posts