다음과 같은 n*m 배열 구조를 출력해보자.
입력이 3 4인 경우 다음과 같이 출력한다.
1 2 3 4
10 11 12 5
9 8 7 6
입력이 4 5인 경우는 다음과 같이 출력한다.
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
입력이 n m인 경우의 2차원 배열을 출력해보자.
입력
첫 번째 줄에 배열의 크기 n m이 입력된다.
[입력값의 정의역]
1<= n,m <= 100
출력
n*m 크기의 배열을 설명과 같이 채워 출력한다.
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int x = 1, y = 1;
int array[101][101] = {
0,
};
int banghyang = 0; // 0우 1좌 2위 3아래
for (int i = 1; i <= n * m; i++) {
array[y][x] = i;
if (banghyang == 0) {
if (x + 1 > m || array[y][x + 1] != 0) {
banghyang = 3;
y++;
} else {
x++;
}
} else if (banghyang == 1) {
if (x - 1 < 1 || array[y][x - 1] != 0) {
banghyang = 2;
y--;
} else {
x--;
}
} else if (banghyang == 2) {
if (y - 1 < 1 || array[y - 1][x] != 0) {
banghyang = 0;
x++;
} else {
y--;
}
} else if (banghyang == 3) {
if (y + 1 > n || array[y + 1][x] != 0) {
banghyang = 1;
x--;
} else {
y++;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
printf("%d ", array[i][j]);
}
printf("\\n");
}
}
정수 banghyang 변수가 0일 경우 오른쪽으로 이동, 1일 경우 왼쪽으로 이동, 2일 경우 위로 이동, 3일 경우 아래로 이동합니다.