[C]백준_2444 : 별 찍기 - 7

Alal11·2023년 2월 20일
0
post-thumbnail

출처

https://www.acmicpc.net/problem/2444


문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입출력


알고리즘 분류

  • 구현

➡️문제 분석

for문을 이용하여 예제 출력처럼 별을 출력한다.


➡️코드(⭕)

#include <stdio.h>

int main()
{
	int n, cnt = 1;

	scanf("%d", &n);

	for (int i = 0; i < n; i++)
	{
		for (int j = n - i - 1; j > 0; j--)
		{
			printf(" ");
		}
		for (int k = 0; k < 2 * cnt - 1; k++)
		{
			printf("*");
		}
		cnt++;
		printf("\n");
	}
	cnt = n;
	for (int a = 0; a < n - 1; a++)
	{
		for (int b = 0; b < a + 1; b++)
		{
			printf(" ");
		}
		for (int c = 2 * cnt - 3; c > 0; c--)
		{
			printf("*");
		}
		cnt--;
		printf("\n");
	}
}

➡️코드 분석

  1. n을 입력받고, 출력에서 마름모를 가로로 자른 윗부분인 큰 삼각형 모양을 먼저 출력하기 위해 i=0부터 n번 반복하는 반복문을 생성한다.

    1-1. 공백은 n-1개, n-2개, ... 각 줄마다 1씩 줄어들게 출력하기 위해 n-i-1번을 반복해준다.

    1-2. 별은 1개, 3개, ..., 2*n-1개까지 2씩 증가하도록 출력하기 위해 cnt=1부터 반복마다 1씩 증가하도록 해주고 줄바꿈을 해준다.

  2. 이제 밑부분인 작은 역삼각형 모양을 출력하기 위해 먼저 n-1번을 반복해주는 반복문을 생성해준다.

    2-1. 공백을 1개, 2개, ..., n-1개씩 출력하기 위해 b=0부터 a+1번을 반복해준다.

    2-2. 별을 2*n-3개, 2*(n-1)-3개, ..., 1개까지 2씩 줄어들게 출력하기 위해 c=2*cnt-3에서 반복마다 cnt를 -1씩 해주고 줄바꿈을 해준다.


➡️end

삼각형과 역삼각형 출력하기를 섞은 문제였다. 아직까진 혼자 풀 만한데 다음 별 찍기는 어떤 모양일까..?!

0개의 댓글