728x90
문제설명

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

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

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

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

 

 

입력

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

 

 

출력

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

 

 

입력 예시

4

 

 

출력 예시

4 3 2 1

8 7 6 5

12 11 10 9

16 15 14 13


#include <stdio.h>
int main(void){
    int n,m;
    int nsize[101][101];
    scanf("%d", &n);
    for(int i=0;i<n;i++){
        for(int j=n-1;j>=0;j--){
            nsize[i][j]=m+1;
            m++;
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            printf("%d ", nsize[i][j]);
        }
        printf("\n");
    }
    return 0;
}

이 문제가 살짝 어렵게 느껴졌다. 앞에 문제와 다른 점이 있었는데 그것은 줄마다 서로 순서가 바뀐다는 것이다. 이것을 어떻게 코드로 해결할 것인가가 중요한 문제인것 같다. 이를 해결하기 위해 각 줄을 나타내는 i는 그대로 가고 각각의 숫자를 나타내는 j를 반대로 작업을 해주면 된다. 그리고 nsize라는 숫자 배열을 설정해주었다.그리고 m+1을 해 주었는데 그 이유는 나는 0을 시작점으로 잡아서 숫자가 하나 작기 때문이다.이렇게 for 문을 설정해주면된다.

이후 출력도 크게 달라지는 것은 없고 nsize배열을 출력시키면 된다. 4개 이후 줄바꿈을 위해 for문의 j가 끝나면 \n을 통해 줄을 바꿔주는 코드를 써주면 된다. 이것을 통해 만들어 낼 수 있다.

728x90

+ Recent posts