Algorithm/Jungol (도형만들기1)

[1856] 숫자사각형2

whereareyoung 2023. 9. 12. 11:20

문제

사각형의 높이 n과 너비 m을 입력받은 후, 사각형 내부에 지그재그 형태로 1부터 n*m번까지 숫자가 차례대로 출력되는 프로그램을 작성하시오. 

  

< 처리조건 > 

숫자의 진행 순서는 처음에 왼쪽에서 오른쪽으로 너비 m만큼 진행 한 후 방향을 바꾸어서 이를 반복한다. 

입력

사각형의 높이n와 너비m( n과 m의 범위는 100 이하의 정수)을 입력받는다.

출력

위에서 형태의 직사각형을 입력에서 들어온 높이 n과 너비 m에 맞춰서 출력한다.

숫자 사이는 공백으로 구분한다.

예제 입력

4 5

 

예제 출력

1 2 3 4 5 
10 9 8 7 6 
11 12 13 14 15 
20 19 18 17 16

 


<입력의 설계>

- 변수 선언 입력받을 수 n, m / 반복문용 i, j / 숫자 셀 용 cnt 로 함

- 지그재그가 복잡하니 arr 배열 선언 

- scanf 로 입력받음, 입력받을 때 if 문으로 0 초과 100 이하로 값 설정했을 때만 돌아가도록 함

 

<출력의 설계>

- if 문 실행안될시 종료

- 실행됐을 때 행 열로 크기 잡아서 홀수일때는 오름차순 +1 짝수일때는 내림차 순 +1을 해줌

- 지그재그로 완성된 배열을 순서대로 출력 

 

제출답변

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    int n, m;
    int i, j;
    int cnt = 1;
    int arr[100][100] = {0};

    scanf("%d %d", &n, &m);
    if (n <= 100 && m <= 100 && n > 0 && m > 0)
    {
        for (i = 0; i < n; i++)
        {
            if (i % 2 == 0)
            {
                for (j = 0; j < m; j++)
                {
                    arr[i][j] = cnt++;
                }
            } 
            else 
            {
                for (j = m - 1; j >= 0; j--)
                {

                    arr[i][j] = cnt++;
                }
            }
        }

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

    return 0;
}

'Algorithm > Jungol (도형만들기1)' 카테고리의 다른 글

[2046] 숫자사각형4  (0) 2023.09.12
[1304] 숫자사각형3  (0) 2023.09.12
[1303] 숫자사각형1  (0) 2023.09.12
[1341] 구구단2  (0) 2023.09.12
[1291] 구구단  (0) 2023.09.12