높이 N을 입력받아 별(*)로 네 가지 삼각형을 출력했습니다. 바깥 반복문은 줄, 안쪽 반복문은 그 줄의 공백과 별 개수를 담당합니다.
1. 패턴별 규칙
i번째 줄(1 ≤ i ≤ N)에 찍는 공백과 별의 개수입니다.
| 패턴 | 공백 | 별 |
| 직각삼각형 | 0 | i |
| 역삼각형 | 0 | N - i + 1 |
| 오른쪽 정렬 삼각형 | N - i | i |
| 피라미드 | N - i | 2i - 1 |
처음 작성한 코드는 바깥 반복문을 0부터 N까지 돌려 첫 줄이 비거나(직각, 오른쪽 정렬, 피라미드) N + 1줄이 출력되는(역삼각형) 문제가 있어, 아래 코드는 1부터 N까지 돌도록 정리했습니다.
2. 직각삼각형
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++)
printf("*");
printf("\n");
}
return 0;
}
*
**
***
3. 역삼각형
for (int i = 1; i <= n; i++) {
for (int j = n; j >= i; j--)
printf("*");
printf("\n");
}
***
**
*
4. 오른쪽 정렬 삼각형
for (int i = 1; i <= n; i++) {
for (int j = n - i; j > 0; j--)
printf(" ");
for (int j = 1; j <= i; j++)
printf("*");
printf("\n");
}
*
**
***
5. 피라미드
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++)
printf(" ");
for (int j = 0; j < 2 * i - 1; j++)
printf("*");
printf("\n");
}
*
***
*****
6. 정리
- 바깥 반복문은 줄 수, 안쪽 반복문은 공백과 별 개수를 정합니다.
- 줄 번호 i로 공백(N - i)과 별(i, 2i - 1 등)의 개수를 식으로 세우면 어떤 모양이든 만들 수 있습니다.
- 반복 시작 값(0 또는 1)에 따라 줄 수가 달라지므로 범위를 먼저 확인합니다.
728x90
'Club > EMOTION' 카테고리의 다른 글
| [C] 입력받은 크기의 달팽이 배열 출력 (0) | 2018.05.03 |
|---|---|
| [C] 재귀 함수로 피보나치 수열 출력 (0) | 2018.05.03 |
서울
--:--:--
-전체 글
-카테고리
오늘 방문