문제 설명
다음과 같은 n*m 배열 구조를 출력해보자.
입력이 3 4인 경우 다음과 같이 출력한다.
8 9 10 1
7 12 11 2
6 5 4 3
입력이 4 5인 경우는 다음과 같이 출력한다.
11 12 13 14 1
10 19 20 15 2
9 18 17 16 3
8 7 6 5 4
입력이 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 = m, y = 1;
int array[101][101] = {0,};
int banghyang = 3; // 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]) {
banghyang = 3;
y++;
} else {
x++;
}
} else if (banghyang == 1) {
if (x - 1 < 1 || array[y][x - 1]) {
banghyang = 2;
y--;
} else {
x--;
}
} else if (banghyang == 2) {
if (y - 1 < 1 || array[y - 1][x]) {
banghyang = 0;
x++;
} else {
y--;
}
} else if (banghyang == 3) {
if (y + 1 > n || array[y + 1][x]) {
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");
}
}