반복문 연습문제

  • 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("*");
}

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

역 피라미드 만들기

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

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

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com