정보 처리/알고리즘

달팽이 알고리즘

본클라쓰 2011. 1. 26. 08:20

달팽이 알고리즘

 

2차원 배열을 선언하여 테두리에서 시작에서 안쪽으로 달팽이집 모양으로 숫자를 입력하는 알고리즘

 

정보처리기사 알고리즘 문제로 바탕으로 프로그래밍

 

프로그래밍 언어 : C언어 풀이 방법은 가로행과 세로열의 변수를 선언하여 반복을 통해 바깥을 다 채우면 점점 안쪽으로 들어가게 함으로써 해결

 

/*

  * 달팽이 배열 알고리즘

  /* 

 

#include <stdio.h>

 

int main(void)
{
 int arr[10][10]={0};      /* 달팽이 배열의 기본 size 10 x 10 */
 int input;                     /* 사용자로부터 배열의 자리수를 10안쪽으로 입력받기 위한 변수 */
 int c=0, sum=0, sum1=0, i=1, val=1;
 int w=-1, h=0;        /* w 가로(행), h 세로(열)을 나타냄 */
 
 printf(" * 달팽이 배열에 대한 이해 *\n");
 printf(" 원하는 배열의 자리수는(최대10자리) : "), scanf("%d", &input);
 
 /* 달팽이 배열 만들기 */
 sum=input*input;
 sum1=input;


 while(1) {


  for(c=0; c<input; c++) {       /* 가로(행)의 증감을 결정하는 loop */
   if(i>0) { w++; }

   else { w--; }
   arr[h][w]=val++;
  }


  input-=1;        /* 반복되는 값을 줄이기 */


  for(c=0; c<input; c++)  {       /* 세로(열)의 증감을 결정하는 loop */
   if(i>0) { h++; }

   else { h--; }
   arr[h][w]=val++;
  }


  i=i*(-1);    /* 증감을 결정하는 변수 */
  if(sum<val) { break; }      /* 전체loop에 대한 끝을 결정 */

 }

 

 for(c=0; c<sum1; c++) {
  for(i=0; i<sum1; i++)  {
   printf("%4d", arr[c][i]);
  }
  printf("\n");
 }
 printf("\n");


 return 0;
}

 

 

 

'정보 처리 > 알고리즘' 카테고리의 다른 글

삽입정렬(Insertion Sort)  (0) 2011.01.26
버블정렬(Bubble Sort) - 교환정렬  (0) 2011.01.26
JAVA - Narcissus 알고리즘  (0) 2011.01.26
정렬 알고리즘  (0) 2011.01.26
N_Queen (Back Tracking 알고리즘)  (0) 2011.01.26