728x90
문제설명

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

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

입력이 5인 경우는 다음과 같이 출력한다.
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

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

 

 

입력

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

 

 

출력

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

 

 

입력예시

4

 

 

출력예시

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

 


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

이 문제가 갑작스럽게 막혔는데 이유는 바로 배열의 범위때문이었다. 문제를 잘 읽어야 한다. 100까지 해준다고 하므로 1개자리를 더 만들어서 101로 만들면된다. 굳이 n을 저장해서 그 범위로 배열을 만들어주지 않아도 되는 것이다. 그리고 숫자를 어떻게 차례대로 할지 고민이 굉장히 많았다. i+j+1도 생각했는데 직접 써보니 오류가 있었고 m 같이 변수를 1부터 시작하도록 하고 매번 1씩 더해주는 방식이 가장 적절하다는 생각이 들었다.

그리고 줄만다 바꾸어주는 것 잊지말고.... for문에서는 각 n씩 범위를 만들어주면 큰 문제가 나오지는 않을 것이다.

728x90

+ Recent posts