SW Study/윤성우 C 프로그래밍
도전! 프로그래밍3. 도전 2
슈도코드
2019. 10. 1. 23:05
#include<stdio.h>
void Snail(int (*arr)[100], int num)
{
int i = 0, j = 0;
int x = 0, y = 0; //가로 세로
int count = 1, turn = 0, limit = num; //숫자 세기, 방향, 출력 범위
int sign = 1; //부호 변환
while (count < (num*num)) //n x n 영역
{
for (i = 1; i < limit; i++) //가로 출력
{
arr[x][y] = count;
y = y + 1 * sign;
count++;
}
turn++;
if (count >= (num*num)) //출력 범위 초과시 탈출
break;
for (j = 1; j < limit; j++) //세로 출력
{
arr[x][y] = count;
x = x + 1 * sign;
count++;
}
sign = sign*(-1); //부호 변환
turn++;
if (turn % 4 == 0) //한 바퀴 돌 때마다 양 쪽 부분 잘라냄
{
limit = limit - 2;
x++;
y++;
}
}
arr[x][y] = count; //마지막 값
}
void ShowArr(int(*arr)[100], int num) //배열 출력
{
int i, j;
for (i = 0; i < num; i++)
{
for (j = 0; j < num; j++)
printf("%3d ", arr[i][j]);
printf("\n");
}
}
int main(void)
{
int num;
int arr[100][100] = { 0 };
printf("num: ");
scanf("%d", &num);
Snail(arr, num);
ShowArr(arr, num);
return 0;
}