[C언어 코드업 문제풀이] CodeUp 1506 : 2차원 배열 채우기 4(역달팽이 배열)

코드업 1506번 2차원 배열 채우기4(역달팽이 배열) 문제 풀이 해답입니다.

 

1. 문제 설명

 

평소 호기심이 많은 남호는 정보고 사이트에 있는 달팽이 배열 문제를 다르게 만들고 싶었다.

입력 예시와 출력 예시를 참고 하여 n을 입력 받아 출력하는 프로그램을 작성하시오.

 

2. 입력

 

배열의 크기 n이 입력된다. (n은 15보다 작은 홀수)

 

3. 출력

 

역 달팽이 배열을 출력한다.

 

4. 입력 예시

 

5

 

5. 출력 예시

 

1 16 15 14 13

2 17 24 23 12

3 18 25 22 11

4 19 20 21 10

5 6 7 8 9 

 

6. 문제 풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "stdio.h"
 
 
int main(void)
{
    int Arr[101][101= {};
    
    
    int n;
    scanf("%d"&n);
    
    
    
    
    int x = 1;
    int i = 1;
    int j = 1
    
    int Xaxis = -1;
    int Yaxis = 1;
    
    for(int k = 1; k <= n*n; k++){
        Arr[i][j] = x;
        x++;
        if( j <=&& Xaxis == 1 && Yaxis == 1){  //우측
            if(j+1 <= n && Arr[i][j+1== 0){j++;}
            else{
                i--;
                Yaxis = -1;
                
            }
        }
        else if( i <=&& Xaxis == -1 && Yaxis == 1){ //아래로
            if(i+1 <= n  && Arr[i+1][j] == 0){i++;}
            else{
                j++;
                
                //Yaxis = -1;
                Xaxis = 1;
            }
        }
        else if(  j >=1 && Xaxis == -1 && Yaxis == -1){ //왼쪽
            if(j-1 > 0 && Arr[i][j-1== 0){j--;}
            else{
                i++;
                
                Yaxis = 1;
                
            }
        }
        else if(i >=1 && Yaxis == -1 && Xaxis == 1 ){  //위로
            if(i-1 >0 & Arr[i-1][j] == 0){
                
                i--;}
            else{
                j--;
                Xaxis = -1;
                
            }
        }
        
        
        
        
    }
    
    
    
    
    
    for(int i = 1; i <= n; i++){
        
        for(int j = 1; j <= n; j++){
            printf("%d ",Arr[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}
 
 

댓글()