시계방향 달팽이 그리기
문제
시계방향으로 달팽이를 그려라
결과값
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
참고
http://gompangs.tistory.com/24
- 방향을 바꿀 때 마다 x, y열의 그리기는 한칸 씩 줄어든다.
- 방향을 바꾸는 변수 필요
문제풀이
package algo;
public class banggle {
public static void main(String[] args)
{
int count = 5; // 한줄에 몇번 돌 것인가
int max_size = count;
int value = 0;
int arr[][] = new int[count][count];
int x = -1; // 좌표 0,0 ~ 0,4 까지 그리고 나서 다음 y줄을 그리려고 하면 0,5 좌표라서 // 되어서 array size 초과 에러가 되므로
// 배열초과 에러난다. x시작값이 -1인게 중요하다.
int y = 0;
int pos = 1;
for(int i = 0; i < max_size; ++i)
{
for(int xx = 0; xx < count; ++xx)
{
x+=pos; // pos는 방향을 정하는 변수다
++value;
arr[y][x] = value;
}
--count; // 한줄에 그리는 횟수를 줄인다.
for(int yy = 0; yy < count; ++yy)
{
y+=pos;
++value;
arr[y][x] = value;
}
// 방향 바꾸기
pos = (pos == 1) ? -1 : 1;
}
// 2차원 배열 출력
for(int i = 0; i < max_size; ++i)
{
for(int j = 0; j < max_size; ++j)
{
System.out.printf("%5d", arr[i][j]);
}
System.out.print("\n");
}
}
}