문제 :

다음과 같은 n*m 배열 구조를 출력해보자.

입력이 3 4인 경우 다음과 같이 출력한다.
8 9 10 1
7 12 11 2
6 5 4 3

입력이 4 5인 경우는 다음과 같이 출력한다.
11 12 13 14 1
10 19 20 15 2
9 18 17 16 3
8 7 6 5 4

입력이 n m인 경우의 2차원 배열을 출력해보자.


내 답 : #include


int main()

{

int n, m, x, y, k=1;

int arr[104][104]={};

scanf("%d %d", &n, &m);

for(x=0; x<=n+1; x++)

{

arr[x][0]=1;

arr[x][m+1]=1;

}

for(y=0; y<=m+1; y++)

{

arr[0][y]=1;

arr[n+1][y]=1;

}

x=1;

y=m;

arr[x][y]=1;

while(k<=n*m)

{

while(arr[x+1][y]==0)

{

x++;

k++;

arr[x][y]=k;

}

while(arr[x][y-1]==0)

{

y--;

k++;

arr[x][y]=k;

}

while(arr[x-1][y]==0)

{

x--;

k++;

arr[x][y]=k;

}

while(arr[x][y+1]==0)

{

y++;

k++;

arr[x][y]=k;

}

}

for(x=1; x<=n; x++)

{

for(y=1; y<=m; y++) printf("%d ", arr[x][y]);

printf(" ");

}

return 0;

}


이라고 하니

시간초과라고 합니다.

어디가 잘못되었는지 가르쳐주실수 있나요?