본문 바로가기

C언어/프로그래밍

달팽이배열 알고리즘

위의 그림과 같이 1부터 순서대로 수를 적어 넣는 달팽이 배열이다.
#include <stdio.h>

int main()
{
  int start=0;
  int count=0;
  int count2;
  int X=0;
  int Y=0;
  int XH;
  int YH;
  int XL=0;
  int YL=0;
  int area[10][10]={0};
  int height;
  int width;
  
  printf("X, Y좌표를 입력하시오 : ");
  scanf("%d %d"&height, &width);
  XH = height-1;
  YH = width-1;

  for(count=0; height*width>count; count++)
  {
    area[Y][X]=count+1;
    
    switch(start)
    {
      case 0 : X++;
           if(XH==X)
           {
             start=1;
             YL++;
           }
           break;
      case 1 : Y++;
           if(YH==Y)
           {
             start=2;
             XH--;
           }
           break;
      case 2 : X--;
           if(XL==X)
           {
             start=3;
             YH--;
           }
           break;
      case 3 : Y--;
           if(YL==Y)
           {
             start=0;
             XL++;
           }
           break;
    }
  }
  
  for(count=0; count<width; count++)
  {
    for(count2=0; count2<height; count2++)
    {
      printf("%2d ", area[count][count2]);
    }
    printf("\n");
  }
  
  return 0;
}