Network & Server Factory

개인 공부 기록

Club/EMOTION

[C] 이중 반복문으로 별 찍기 4가지

1nfra 2018. 4. 2. 16:39
높이 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
서울
--:--:--
-전체 글
-카테고리
오늘 방문