Algorithm/Jungol (도형만들기1)

[1339] 문자삼각형2

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

삼각형의 높이 N을 입력받아서 아래와 같이 문자 'A'부터 차례대로 맨 오른쪽 가운데 행부터 차례대로 아래와 같이 채워서 

삼각형 모양을 출력하는 프로그램을 작성하시오.

< 처리조건 > 

(1) 오른쪽 가운데 행에 문자 'A'를 채우고 왼쪽 열로 이동하여 위에서 아래로 채워나간다.

(2) 가장 왼쪽 행까지 반복하여 모두 채워 나간다. (문자 'Z'다음에는 'A'부터 다시 시작한다.)


예제 입력

5

 

예제 출력

E
F B
G C A
H D
I


<입력의 설계>

- char 문자형, 그리고 어자피삼각형이 라 N/2 로 반으로 잘리므로 배열은 데이터를 절약하기 위해 [100][50] 으로 하였다. 

- 조건에 맞을경우 if 문 실행되거나 종료된다. 

 

<출력의 설계>

- 일단 배열을 다 초기화 한 후 ++ 하며 채워준다, 그후 값이 Null 일 경우 " " 로 출력하여준다. 

- 순서는 반대로 되어있지만 열 (j) 를 우선으로 생각하여야 되기 때문에 보편적으로 사용되는 i, j 순서를 바꾸어준다. 

- 삼각형이기 때문에 N / 2+1 을 활용한 식을 짠다. (1부터 ~ N / 2+1까지 출력)

for (j = N / 2 + 1; j >= 0; j--)
	{
		for (i = j; i <= N - 1 - j; i++)
		{
			arr[i][j] = ch++;
			if (ch > 'Z') ch = 'A';
		}
	}

- 이전에 익혔던 식을 활용하여 +1, -1정도를 조절하여 짰다. 

 

 

제출답변

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	char arr[100][50] = { 0 };
	char ch = 'A';
	int N, i, j;

	scanf("%d", &N);

	if (N % 2 == 1 && N > 0 && N < 100)
	{
		for (j = N / 2 + 1; j >= 0; j--)
		{
			for (i = j; i <= N - 1 - j; i++)
			{
				arr[i][j] = ch++;
				if (ch > 'Z') ch = 'A';
			}
		}

		for (i = 0; i < N; i++)
		{
			for (j = 0; j <= N / 2; j++)
			{
				if (arr[i][j] == 0) printf(" ");
				else printf("%c ", arr[i][j]);
			}
			printf("\n");
		}
	}
	else
	{
		printf("INPUT ERROR");
	}

	return 0;
}

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

[1338] 문자삼각형1  (0) 2023.09.12
[1314] 문자사각형2  (0) 2023.09.12
[1307] 문자사각형1  (0) 2023.09.12
[2046] 숫자사각형4  (0) 2023.09.12
[1304] 숫자사각형3  (0) 2023.09.12