반복문 연습문제

  • 4 minutes to read

연습문제: 피라미드 출력하기

2 ~ 10 사이의 정수를 입력 받아 다음과 같은 피라미드를 출력합니다.

테스트 케이스 예제: 입력: 3

출력:

  *
 ***
*****

테스트 케이스 예제: 입력: 5

출력:

    *
   ***
  *****
 *******
*********

코드: judge_pyramid.c

// 피라미드 출력하기 
#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지 
#include <stdio.h>

int main(void)
{
    int count = 0; // 높이 개수 
    int blank = 0; // 공백 개수 
    int block = 0; // 별표 개수 
    int height = 0; // 높이 번호

    scanf("%d", &count); 

    for (int i = 0; i < count; i++) // i 반복: 입력된 높이 개수만큼 반복
    {
        height = i + 1; // 높이 번호 계산 
        blank = count - height; // 출력할 공백 개수 계산  
        block = 2 * i + 1; // 출력할 별표 개수 계산

        // 공백 출력
        for (int j = 0; j < blank; j++) // j 반복: 공백 개수만큼 반복
        {
            printf(" ");
        }

        // 별표 출력 
        for (int k = 0; k < block; k++) // k 반복: 별표 개수만큼 반복
        {
            printf("*");
        }

        printf("\n"); // 높이 줄바꿈
    }

    return 0;
}

결과

테스트 케이스 예제: 표준 입력: 1

표준 출력: *

테스트 케이스 예제: 표준 입력: 4

표준 출력:

   *
  ***
 *****
*******

테스트 케이스 예제: 표준 입력: 10

표준 출력:

         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
*******************

해설

입력된 수만큼 높이를 반복하여 피라미드 모양을 출력하는 방법을 코드로 만드는 방법은 굉장히 다양합니다. 피라미드 모양은 이번에 배운 for 반복문을 3개 사용해서 구현할 수도 있습니다.

소스에서는 높이 개수를 count 변수에 입력 받아 그 개수만큼 for 반복문으로 반복합니다.

scanf("%d", &count); 

for (int i = 0; i < count; i++) // i 반복: 입력된 높이 개수만큼 반복
{
    printf("\n"); // 높이 줄바꿈
}

for 반복문의 각각의 반복마다 이해하기 쉽게 높이 번호를 계산합니다.

height = i + 1; // 높이 번호 계산

피라미드 출력 방식을 분석해보면, 앞에 공백이 있고 그 다음에 별표 기호가 나오는 형태입니다. 각 높이마다 출력할 공백의 개수는 전체높이개수 - 현재높이번호로 계산합니다.

blank = count - height; // 출력할 공백 개수 계산

각 높이마다 출력할 별표의 개수는 2 * i + 1 코드를 사용하여 1, 3, 5, ..., 10 형태로 증가하게 됩니다.

block = 2 * i + 1; // 출력할 별표 개수 계산

안쪽 for 반복문의 첫 번째에서는 계산된 공백 개수만큼 공백을 출력합니다.

// 공백 출력
for (int j = 0; j < blank; j++) // j 반복: 공백 개수만큼 반복
{
    printf(" ");
}

공백이 출력된 다음에 바로 이어서 for 반복문을 사용하여 별표 개수를 출력합니다.

// 별표 출력 
for (int k = 0; k < block; k++) // k 반복: 별표 개수만큼 반복
{
    printf("*");
}

높이 반복마다 공백 개수만큼 공백을 출력하고 이어서 별표 개수만큼 별표를 출력한다음에 최종 줄바꿈을 하면 피라미드 모양이 완성됩니다.

역 피라미드 만들기

피라미드 만들기의 응용으로 역 피라미드(역 정삼각형) 만들기도 이어서 학습해보세요.

연습문제 - 역 피라미드 만들기

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com