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
'C language > Codeup' 카테고리의 다른 글
[C] 코드업 문제풀이 1805:입체기동장치 생산공장 (0) | 2021.08.19 |
---|---|
[C] 코드업 문제풀이 1535:함수로 가장 큰 값 위치 리턴하기 (0) | 2021.08.19 |
[C] 코드업 문제풀이 1420: 3등찾기 (0) | 2021.08.18 |
[C] 코드업 문제풀이 1172: 세수 정렬하기 (0) | 2021.08.18 |
[C] 코드업 문제풀이 1295: 알파벳 대소문자 변환 (0) | 2021.08.18 |