[C]백준_2445 : 별 찍기 - 8

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

출처

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


문제

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


입력

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


출력

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


예제 입출력


알고리즘 분류

  • 구현

➡️문제 분석

별, 공백, 별 순으로 해서 for문을 이용하여 출력한다.

예제 출력을 대칭이 되도록 가로로 잘랐을 때
윗 부분 - 별 개수 +1씩, 공백 -1씩
아랫 부분 - 별 개수 -1씩, 공백 +1씩
되는 규칙이 있다.


➡️코드(⭕)

#include <stdio.h>

int main()
{
	int n, cnt1, cnt2;

	scanf("%d", &n);

	cnt1 = n;

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

➡️코드 분석

  1. n을 입력받고, cnt1에 n의 값을 넣어준다.

  2. 예제 출력을 가로로 자른 윗 부분을 출력하기 위해 n번 반복하는 for문을 세워준다.

    2-1. i 값에 따라 1개부터 n개까지 별을 출력하는 반복문을 세워준다.

    2-2. 2*(cnt1-1)개부터 2개씩 줄어들며 공백을 출력하기 위해 cnt1을 -1씩 해준다.

    2-3. 공백 기준 오른쪽과 왼쪽의 별의 개수가 같기 때문에 2-1과 똑같은 for문을 세워주고 줄자꿈을 해준다.

  3. 아랫 부분을 출력하기 위해 n-1번 반복하는 for문을 세워준다.

    3-1. n-1개부터 1씩 줄어들도록 하여 별을 출력한다.

    3-2. cnt2는 2부터 +2씩 하여 공백을 출력한다.

    3-3. 3-1과 같은 반복문을 세워주고 줄바꿈을 해주면 된다.


➡️end

지금껏 풀었던 별찍기 중에 제일 어렵긴 했지만 그래도 차근차근 하니 풀 만했다!!

0개의 댓글