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

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

 

1. 문제 설명

 

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

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

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

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

 

2. 입력

 

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

 

3. 출력

 

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

 

4. 입력 예시

 

2 3

 

5. 출력 예시

 

    2 4 6

    1 3 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
#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_i--//옆으로 시작점 이동
                if(temp_i <= 0){ //범위 밖이면
                    temp_i = 1;
                    temp_j++;
                }
                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;
}
 
 

댓글()