[C언어 코드업 문제풀이] CodeUp 1490 : [기초-배열연습] 2차원 배열 달팽이 채우기 4-7

코드업 1490번 2차원 배열 달팽이 채우기 4-7 문제 풀이 해답입니다.

 

1. 문제 설명

 

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

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

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

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

 

2. 입력

 

첫 번째 줄에 배열의 크기 n m이 입력된다.
[입력값의 정의역]
1<=  n,m <= 100

 

3. 출력

 

n*m 크기의 배열을 설명과 같이 채워 출력한다.

 

4. 입력 예시

 

2 3

 

5. 출력 예시

 

2 3 4

1 6 5

 

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
82
#include "stdio.h"
 
 
int main(void)
{
    int Arr[101][101= {};
    
    
    int n,m;
    scanf("%d %d"&n, &m);
    
    
    
 
    int x = 1;
    int i = n;
    int j = 1//시작이 (1,m)에서 시작.
    
    int Xaxis = 1;
    int Yaxis = -1;
    
    for(int k = 1; k <= n*m; k++){
        Arr[i][j] = x;
        x++;
        if( j <=&& Xaxis == 1 && Yaxis == 1){
            if(j+1 <= m && Arr[i][j+1== 0){j++;}
            else{
                i++;
                Xaxis = -1;
                
            }
        }
        else if( i <=&& Xaxis == -1 && Yaxis == 1){
            if(i+1 <= n  && Arr[i+1][j] == 0){i++;}
            else{
                j--;
                
                Yaxis = -1;
                
            }
        }
        else if(  j >=1 && Xaxis == -1 && Yaxis == -1){
            if(j-1 > 0 && Arr[i][j-1== 0){j--;}
            else{
                i--;
                
                Xaxis = 1;
                
            }
        }
        else if(i >=1 && Yaxis == -1 && Xaxis == 1 ){
            if(i-1 >0 & Arr[i-1][j] == 0){
                
                i--;}
            else{
                j++;
                Yaxis = 1;
                
            }
        }
        
        
        
        
    }
    
    
    
    
    
    for(int i = 1; i <= n; i++){
        
        for(int j = 1; j <= m; j++){
            printf("%d ",Arr[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}
 
 
 

댓글()