반복문 연습문제
연습문제: 피라미드 출력하기
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("*");
}
높이 반복마다 공백 개수만큼 공백을 출력하고 이어서 별표 개수만큼 별표를 출력한다음에 최종 줄바꿈을 하면 피라미드 모양이 완성됩니다.
역 피라미드 만들기
피라미드 만들기의 응용으로 역 피라미드(역 정삼각형) 만들기도 이어서 학습해보세요.
추천 자료: ASP.NET Core 인증 및 권한 부여
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!