문제
삼각형의 높이 n과 종류 m을 입력 받은 후 다음과 같은 삼각형 형태로 출력하는 프로그램을 작성하시오.
입력
삼각형의 크기 n(n의 범위는 100 이하의 자연수)과 종류 m(m은 1부터 3사이의 자연수)을 입력받는다.
출력
위에서 언급한 3가지 종류를 입력에서 들어온 높이 n과 종류 m에 맞춰서 출력한다.
입력된 데이터가 주어진 범위를 벗어나면 "INPUT ERROR!"을 출력한다.
예제1 입력
3 2
예제1 출력
***
**
*
예제2 입력
4 3
예제2 출력
*
***
*****
*******
예제3 입력
200 3
예제3 출력
INPUT ERROR!
별 삼각형 기본이론
별의 개수는 결과적으로 i = 줄 번호 개수, 한줄이 끝날때마다 \n 출력.
- 행의 번호(i) 를 결정 (1~N 또는 N~1)
- 각 행의 공백의 개수와 ' * ' 의 개수를 구하는 식을 찾는다.
- 행마다 공백출력, ' * ' 출력, 줄바꿈 (' \n ') 출력
<입력 설계>
삼각형의 크기 n(n의 범위는 100 이하의 자연수)과 종류 m(m은 1부터 3사이의 자연수)을 입력받는다.
조건을 충족하지 못할경우 처리부분을 만든다.
int n, m;
scanf("%d %d", &n, &m);
if (n >= 1 && n <= 100 && m >= 1 && m <= 3)
{}
else
{}
<출력 설계>
종류 1) 기본이론에 따라 설계한다.
for (i = 1; i <= n; i++)
{
for (j = 1; j <= i; j++)
{
printf("*");
}
printf("\n");
}
종류 2) 번호를 i 를 뒤집어버리면 " 별의 개수 = i " 이기 때문에 다음과 같이 줄의 번호만 바꾸어 주면 된다.
for (i = n; i >= 1; i--)
{
for (j = 1; j <= i; j++)
{
printf("*");
}
printf("\n");
}
종류 3) 2개씩 늘어나기 때문에 *2가 들어가야 하는데, 값이 맞지 않기 떄문에 -1 를 해 주는 방식으로 식을 짜서 해결할 수 있다.
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n - i; j++)
{
printf(" ");
}
for (j = 1; j <= i * 2 - 1; j++)
{
printf("*");
}
printf("\n");
}
제출답변
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
if (n >= 1 && n <= 100 && m >= 1 && m <= 3)
{
if (m == 1) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}
}
else if (m == 2)
{
for (int i = n; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}
}
else
{
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
printf(" ");
}
for (int j = 1; j <= i * 2 - 1; j++) {
printf("*");
}
printf("\n");
}
}
}
else
{
printf("INPUT ERROR!\n");
}
return 0;
}
'Algorithm > Jungol (도형만들기2)' 카테고리의 다른 글
[5397] 달팽이사각형 (reserved) (0) | 2023.10.17 |
---|---|
[1707] 달팽이 사각형 (0) | 2023.10.17 |
[1641] 숫자삼각형 (0) | 2023.10.17 |
[1329] 별삼각형3 (1) | 2023.10.17 |
[1719] 별삼각형2 (0) | 2023.10.17 |