문제
삼각형의 높이 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 |