문제
입력
출력
정사각형의 한 변의 길이 n과 종류 m을 입력받은 후 다음과 같은 정사각형 형태로 출력하는 프로그램을 작성하시오.
< 처리조건 >
종류 2번의 경우 숫자의 진행 순서는 처음에 왼쪽에서 오른쪽으로 너비 n만큼 진행 한 후 방향을 바꾸어서 이를 반복한다.
정사각형 한 변의 길이 n(n의 범위는 100 이하의 정수)과 종류 m(m은 1부터 3사이의 정수)을 입력받는다.
위에서 언급한 3가지 종류를 입력에서 한 변의 길이 n과 종류 m에 맞춰서 출력한다. 숫자 사이는 공백으로 구분하여 출력한다.
예제1 입력
3 2
예제1 출력
1 2 3
3 2 1
1 2 3
예제2 입력
4 3
예제2 출력
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
<입력의 설계>
- 반복문용 i, j / 입력용 n, m / 넣어서 정렬용 arr 배열 선언
- n, m 스캔받고 조건에 부합하지 않으면 종료, 부합할 경우 if 문 실행
<출력의 설계>
- m이 1, 2, 3 정수가 아니면 종료되는데, 1일경우 2일경우 3일경우 각각 제시된 규칙으로 배열을 채우게 설정
- 1번은 줄수 카운트 해주는 i로 반복
- 2번은 처음 입력받은 수를 가지고 짝수 홀수 줄이냐에 따라 ++, -- 해서 처리
- 3번은 줄수 늘어나는것을 i가 n 이하인 만큼 반복해서 i, j 로 곱해서 처리
제출답변
#define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
int main()
{
int i, j;
int n, m;
int arr[100][100] = { 0 };
scanf("%d %d", &n, &m);
if (n <= 100 && m >= 1 && m <= 3)
{
if (m == 1)
{
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
printf("%d ", i);
}
printf("\n");
}
}
else if (m == 2)
{
for (i = 1; i <= n; i++)
{
if (i % 2 != 0)
{
for (j = 1; j <= n; j++)
{
printf("%d ", j);
}
}
else if (i % 2 == 0)
{
for (j = n; j >= 1; j--)
{
printf("%d ", j);
}
}
printf("\n");
}
}
else if (m == 3)
{
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
printf("%d ", i * j);
}
printf("\n");
}
}
}
return 0;
}
'Algorithm > Jungol (도형만들기1)' 카테고리의 다른 글
[1314] 문자사각형2 (0) | 2023.09.12 |
---|---|
[1307] 문자사각형1 (0) | 2023.09.12 |
[1304] 숫자사각형3 (0) | 2023.09.12 |
[1856] 숫자사각형2 (0) | 2023.09.12 |
[1303] 숫자사각형1 (0) | 2023.09.12 |