강좌 & 팁
글 수 2,412
2014.04.18 14:07:34 (*.147.223.36)
50961
달팽이 배열
N*N 정방행렬에 달팽이 집과 같은 순서로 데이터를 저장한다.
달팽이 배열은 배열의 크기나 시계 방향 또는 반시계 방향 어디든지 상관 없으나, 이 문제에서는 외부에서 중심까지 시계 방향으로 회전시키는 경우를 다룬다.
소스 코드
#include <stdio.h>
int max;
int main()
{
int dal[50][50];
int i;
int x=0;
int y=-1;
int t=1;
int p;
int cnt=1;
int jmax;
printf("배열 숫자를 입력하세요 nXn: ");
scanf("%d",&p);
max=p;
jmax=max;
while(0<=jmax)
{
for(i=0;i<jmax;i++) //행 표현
{
y=y+t;
dal[x][y]=cnt;
cnt++;
}
jmax--;
for(i=0;i<jmax;i++)// 열 표현
{
x=x+t;
dal[x][y]=cnt;
cnt++;
}
t=t*-1;
}
for(x=0;x<max;x++)// 출력 부분
{
for(y=0;y<max;y++)
{
printf("%4d",dal[x][y]);
}
printf("\n");
}
return 0;
}