[C언어 코드업 문제풀이] CodeUp 1482 : [기초-배열연습] 2차원 배열 빗금 채우기 3-7

코드업 1482번 2차원 배열 빗금 채우기 3-7 문제 풀이 해답입니다.

 

1. 문제 설명

 

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

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

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

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

 

2. 입력

 

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

 

3. 출력

 

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

 

4. 입력 예시

 

2 3

 

5. 출력 예시

 

    3 5 6

    1 2 4 

 

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
#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 temp_j = j;
    int temp_i = i;
    for(int k = 1; k <=n*m; k++){
        if( ( i >= 1 && i <= n) && ( j >= 1 && j <= m) ){
            
            Arr[i][j] = x;
            x++;
            i--;
            j--;
            if!(( i >= 1 && i <= n) && ( j >= 1 && j <= m)) ){ //대각선이 (범위밖)으로 나갔을때
                temp_j++//옆으로 시작점 이동
                if(temp_j >m){ //범위 밖이면
                    temp_j = m;
                    temp_i--;
                }
                i = temp_i;
                j = temp_j;
            }
        }
 
 
        
    }
    
    
 
    for(int i = 1; i <= n; i++){
        
        for(int j = 1; j <= m ; j++){
            printf("%d ",Arr[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}
 
 
 
 

댓글()