문제
정사각형의 크기를 입력 받은 후 시계방향으로 돌면서 다음과 같은 형태로 출력하는 프로그램을 작성하시오.
< 처리조건 >
(1) 가장 왼쪽 위의 좌표부터 차례로 숫자를 대입시킨다.
(2) 오른쪽으로 채워 나가다가 끝이면 다시 아래 → 왼쪽 → 위 →오른쪽의 순으로 모두 채워질때까지 반복한다.

입력형식
정사각형의 크기 n(1부터 100사이의 정수)을 입력받는다.
출력형식
위에서 언급한 형태로 정사각형의 내부 숫자를 차례로 채운 후의 모습을 출력한다. 숫자 사이는 공백으로 구분한다.

<코드>
#include <stdio.h>
enum direction{
RIGHT,
DOWN,
LEFT,
UP
};
int main()
{
int n, num=1;
int x=1, y=0;
int arr[100][100] = {0, };
int direction = RIGHT;
scanf("%d", &n);
if(n<1||n>100)
{
printf("INPUT ERROR!");
return 0;
}
while(1)
{
switch(direction)
{
case RIGHT:
arr[y][x] = num++;
if(x==n||arr[y][x+1])
{
y++;
direction = DOWN;
}
else
x++;
break;
case DOWN:
arr[y][x] = num++;
if(y==n-1||arr[y+1][x])
{
x--;
direction = LEFT;
}
else
y++;
break;
case LEFT:
arr[y][x] = num++;
if(x==1||arr[y][x-1])
{
y--;
direction = UP;
}
else
x--;
break;
case UP:
arr[y][x] = num++;
if(arr[y-1][x])
{
x++;
direction = RIGHT;
}
else
y--;
break;
}
if(arr[y][x])
break;
}
for(int i=0; i<n; i++)
{
for(int j=1; j<=n; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
return 0;
}
'코딩 > Beginner Coder' 카테고리의 다른 글
1495 : 대각선 지그재그 (0) | 2020.05.12 |
---|---|
1331 : 문자마름모 (0) | 2020.05.12 |
2071 : 파스칼 삼각형 (0) | 2020.05.07 |
1337 : 달팽이삼각형 (0) | 2020.05.07 |
1641 : 숫자삼각형 (0) | 2020.05.07 |