Algorithm/Jungol (도형만들기1)

[2046] 숫자사각형4

whereareyoung 2023. 9. 12. 12:54
문제

정사각형의 한 변의 길이 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