달팽이 알고리즘
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 |