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

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

 

1. 문제 설명

 

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

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

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

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

 

2. 입력

 

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

 

3. 출력

 

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

 

4. 입력 예시

 

2 3

 

5. 출력 예시

 

6 5 4

1 2 3

 

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,m;
    scanf("%d %d"&n, &m);
    
    
    
 
    int x = n*m;
    int i = 1;
    int j = 1
    
    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;
}
 
 

댓글()