크기의 행렬에 의 수를 대각선 방향으로 채운 결과를 출력하라
ex) , 행렬일 때의 예시
#include <stdio.h>
#include <stdlib.h>
int main() {
int i = 0, j = 0, N, M;
scanf("%d %d", &N, &M);
int X[100][100] = { 0 };
// 배열 채우기
int num = 1;
// i = 0 일 때
for (i = 0, j = 0; j < M; j++) {
int k = j; //k는 j값을 저장하는 변수
while (i < N && k != -1) {
X[i][k] = num++;
i++; k--;
}
i = 0; // i값 초기화
}
// j = M - 1 일 때
for (i = 1, j = M - 1; i < N; i++) {
int k = i; //k는 j값을 저장하는 변수
while (k != N) {
X[k][j] = num++;
k++; j--;
}
j = M - 1; // j값 초기화
}
// 결과 출력
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
printf(" %d", X[i][j]);
}
printf("\n");
}
return 0;
}
아래 그림과 같이 두 파트로 나누기로 했다
- 에서 인 경우
- 에서 인 경우