문제 설명

다음과 같은 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");
    }
}