[C]백준_2446 : 별 찍기 - 9

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

출처

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


문제

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


입력

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


출력

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


예제 입출력


알고리즘 분류

  • 구현

➡️문제 분석

역삼각형과 삼각형 모양을 for문을 활용하여 출력해준다.


➡️코드(⭕)

#include <stdio.h>

int main(void)
{
	int n, cnt;

	scanf("%d", &n);

	cnt = n;

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

➡️코드 분석

  1. n을 입력받고, 역삼각형을 먼저 출력하기 위해 n번 반복하는 반복문을 세워준다.

    1-1. 0번부터 n-1번까지 1씩 증가하도록 반복하여 공백을 출력해준다.

    1-2. 2*cnt-1개부터 2개씩 줄어들도록 반복마다 cnt--;를 해주어 별을 출력하고, 줄 바꿈을 해준다.

  2. 꼭짓점 별 1개를 제외한 삼각형을 출력하기 위해 n-1번 반복하는 반복문을 세워준다.

    2-1. 공백은 n-2번부터 1개씩 줄어들며 출력되므로 cnt에 n-2를 넣어주고 cnt번 반복해준 다음 cnt--;를 해준다.

    2-2. 별은 3개부터 2개씩 늘어나며 출력되므로 2*i+3번을 반복해주는 반복문을 세워주고, 줄 바꿈을 해준다.


➡️end

다음 별 찍기 문제는 아마 건너뛰거나 아주 나중에 풀 것 같다.. 아니ㅜ 계속 브론즈 였다가 갑자기 골드로 건너뛰면 어쩌라는 거야!! 깜짝 놀랐다 정말ㅋㅋㅋ 아직은 실버도 제대로 못 풀기 때문에..! 이제 별 짝기는 그만하고 실버 문제 위주로 풀어봐야 겠다.

0개의 댓글