문제
사각형의 높이 n과 너비 m을 입력받은 후, 사각형 내부에 지그재그 형태로 1부터 n*m번까지 숫자가 차례대로 출력되는 프로그램을 작성하시오.
< 처리조건 >
숫자의 진행 순서는 처음에 왼쪽에서 오른쪽으로 너비 m만큼 진행 한 후 방향을 바꾸어서 이를 반복한다.
![](https://blog.kakaocdn.net/dn/XmpKc/btstOkaxuZE/AmevjjzTPlkZZOXkpgmMI0/img.png)
입력
사각형의 높이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 |