본문 바로가기

C programming/[Code Up]

[Code Up] 1505번 : 2차원 배열 채우기 3(달팽이 배열)

728x90
반응형

난이도  ⭐️ ⭐️ ⭐️ 

문제 설명

 

2차원 배열 채우기 3(달팽이 배열)

n이 입력되면 크기가 n인 다음과 같은 2차원 배열을 출력하시오. 입력 예) 3 출력 예) 1 2 3 8 9 4 7 6 5

codeup.kr

n이 입력되면 크기가 n인 다음과 같은 2차원 배열을 출력하시오.

입력 예)
3
출력 예)
1 2 3
8 9 4
7 6 5
입력

2차원 배열의 크기 n이 입력된다.(n<=50)

출력

크기가 n인 달팽이 배열을 출력한다.(설명참조)

[입력 예시]

2

[출력 예시]

1 2
4 3

정답 코드

#include<stdio.h>
int main(){

    int n,val = 1;
    int dnum[101][101];
    scanf("%d",&n);
    
    int row_max = n,row_min = 0,cro_max=n,cro_min=0;
    while(1){

        // printf("----cro_min = %d | cro_max = %d----\n",cro_min,cro_max);
        for(int i=cro_min;i<cro_max;i++){
            dnum[row_min][i] = val;
            // printf(">>dnum[%d][%d] = %d\n",row_min,i,val);
            val ++;
        } row_min ++; cro_max --;
        if(val >= (n*n) ) break;
        
        // printf("-------------\n");
        for(int i=row_min;i<row_max;i++){
            dnum[i][cro_max] = val;
            // printf("|| dnum[%d][%d] = %d\n",i,cro_max,val);
            val ++; 
        }row_max --; cro_max --;
        // printf("-------------\n");
        for(int i=cro_max;i>=cro_min;i--){
            dnum[row_max][i] = val;
            // printf("<<dnum[%d][%d] = %d\n",row_max,i,val);
            val ++; 
        }row_max --;
        if(val >= (n*n) ) break;
        
        // printf("-------------\n");
        for(int i=row_max;i>=row_min;i--){
            dnum[i][cro_min] = val;
            // printf("|| dnum[%d][%d] = %d\n",i,cro_min,val);
            val ++; 
        }cro_min ++;
        // printf("----row_min = %d | row_max = %d----\n",row_min,row_max);
        // printf("----cro_min = %d | cro_max = %d----\n",cro_min,cro_max);
        // printf("----n = %d | val = %d----\n",n,val);

        // for(int i=0;i<n;i++){
        //     for(int j=0;j<n;j++) printf("%d ",dnum[i][j]);
        //     printf("\n");
        // } 
        
        cro_max +=1;
        row_max +=1;
        

    }
    // printf("결과\n");
    for(int i=0;i<n;i++){
            for(int j=0;j<n;j++) printf("%d ",dnum[i][j]);
            printf("\n");
        } 


}
728x90
반응형
댓글