728x90
반응형
난이도 ⭐️ ⭐️ ⭐️
문제 설명
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
반응형
'Datastructure > [Code Up]' 카테고리의 다른 글
[Code Up] 4701번 : 두 용액 (0) | 2024.01.20 |
---|---|
[Code Up] 1477번 : 2차원 배열 빗금 채우기 3-2 (1) | 2023.11.20 |
[Code Up] 1476번 : 2차원 배열 빗금 채우기 3-1 (2) | 2023.11.20 |
[Code Up] 1368번 : 평행사변형 출력하기 2 (1) | 2023.11.02 |
[Code Up] 1294번 : 시저의 암호 2 (0) | 2023.11.02 |