Algorithm/Jungol (도형만들기1)

[1338] 문자삼각형1

whereareyoung 2023. 9. 12. 14:06
문제

삼각형의 높이 N을 입력받아서 아래와 같이 문자 'A'부터 차례대로 왼쪽 대각선으로 채워서 삼각형 모양을 출력하는 프로그램을 작성하시오.

 

[ 처리조건 ] 

(1) 오른쪽 위부터 왼쪽 아래쪽으로 이동하면서 문자 'A'부터 차례대로 채워나간다.

(2) N번 행까지 채워지면 다시 오른쪽 둘째 행부터 왼쪽 아래로 채워나간다. 

(3) 삼각형이 모두 채워질 때까지 반복하면서 채워 나간다. (문자 'Z'다음에는 'A'부터 다시 시작한다.) 

입력

삼각형의 높이 N(N의 범위는 100 이하의 양의 정수)을 입력받는다.

출력

주어진 형태대로 높이가 N인 문자삼각형을 출력한다.

문자 사이는 한 개의 공백으로 구분한다.


예제 입력

5

 

예제 출력

        A
      B F
    C G J
  D H K M
E I L N O


<입력의 설계>

- n을 입력 받아 왼쪽 대각선부터 채워서 삼각형을 출력하는 프로그램을 작성하는 문제인데

- n은 100이하의 양의 정수 (조건 전 도형 그리기 했던 방식으로 넣기)

- 배열으로 만든다음에 초기화

 

<출력의 설계>

- 시작 행의 위치를 기준으로 k = 1~n 반복문 설계

k 를 설정해서 N이 5인경우 

- k 가 1인경우 (1, 5) ~ (5, 1)

- k 가 2인경우 (2, 5) ~ (5, 2)

- k 가 3인경우 (3, 5) ~ (5, 3)

...

- ch 가 Z보다 커지면 A로 바꿔 주어야 한다는 내용 추가 

- 시작위치가 k와 같은데 끝이 5로 하나의 반복문에 행과 열을 동시에 넣는게 팁이다.

- 출력시 1~ 5까지 nulll 값을 출력하면 공백을 출력해야하는데, 컴파일러에따라 달라서 정확하지 않기 때문에 주의가 필요하다.

 

 

제출답변

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int n, i, j, k;
	char arr[101][101] = { 0 };
	char ch = 'A';

	scanf("%d", &n);

	for (k = 1; k <= n; k++)
	{
		for (i = k, j = n; i <= n; i++, j--)
		{
			arr[i][j] = ch++;
			if (ch > 'Z')
				ch = 'A';
		}
	}


	for (i = 1; i <= n; i++)
	{
		for (j = i; j < n; j++)
		{
			printf("  ");
		}
		for (j = 1; j <= n; j++)
		{
			if (arr[i][j] != '\0')
			{
				printf("%c ", arr[i][j]);
			}
		}
		printf("\n");
	}

	return 0;
}

 

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

[1339] 문자삼각형2  (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