알고리즘 공부/CodeUp 문제풀이

코드업 기초 배열연습 1476:2차원 배열 빗금 채우기 3-1

티들 2023. 10. 8. 19:55

문제 설명

다음과 같은 n*m 배열 구조를 출력해보자.

입력이 3 4인 경우 다음과 같이 출력한다.
1 3 6 9
2 5 8 11
4 7 10 12

입력이 4 5인 경우는 다음과 같이 출력한다.
1 3 6 10 14
2 5 9 13 17
4 8 12 16 19
7 11 15 18 20

입력이 n m인 경우의 2차원 배열을 출력해보자.

 

입력

첫 번째 줄에 배열의 크기 n m이 입력된다.
[입력값의 정의역]
1<=  n,m <= 100

 

출력

n*m 크기의 배열을 설명과 같이 채워 출력한다.

 

입력 예시

2 3

 

출력 예시

1 3 5

2 4 6

 

나의 코드

#include <stdio.h>

int main()
{
    int i, j, n, m, num = 1;	// 변수 선언
    int arr[100][100];	// 배열 선언
    int max, min;
    scanf("%d %d", &n, &m);	// 입력받음

    for (i=1;i<=n+m-1;i++)
    {	
    	// 시작 위치, 마지막 위치
        min = (i <= n) ? i : n;
        max = (i <= m) ? 1 : (i - m + 1);
		
        // 대각선으로 num을 넣어주고 값 1씩 증가
        for (j=min;j>=max;j--)
            arr[j][i - j + 1] = num++;
    }

	// 출력
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= m; j++)
            printf("%d ", arr[i][j]);
        printf("\n");
    }

    return 0;
}

 

문제 바로가기:https://codeup.kr/problem.php?id=1476