[C++][백준 2444] 별 찍기 - 7

PublicMinsu·2024년 7월 22일

문제

접근 방법

규칙을 찾아내면 된다.
별이 나오기 전에 공백의 개수는 규칙적이다.
별의 개수도 위치에 따라 규칙적이다.

별이 나오기 전에 공백의 개수는 N-1에서 시작하여 0개에 도달한 뒤 다시 N-1에 도달한다.

별의 개수는 1에서 시작한 뒤 2*N-1에 도달하고 다시 1로 돌아온다.

코드

#include <iostream>
using namespace std;
int N;
int main()
{
    ios::sync_with_stdio(0), cin.tie(0);

    cin >> N;

    int maxEmptyLength = N - 1;

    for (int i = 0; i < 2 * N - 1; ++i)
    {
        int currentEmptyLength = abs(maxEmptyLength - i);

        for (int j = 0; j < currentEmptyLength; ++j)
        {
            cout << " ";
        }

        for (int j = 0; j < (maxEmptyLength - currentEmptyLength) * 2 + 1; ++j)
        {
            cout << "*";
        }

        cout << "\n";
    }
    return 0;
}

풀이

증가하는 부분과 감소하는 부분으로 나누어 풀어도 된다.
또는 공백의 개수에서 규칙을 찾아내어 각 위치에 몇 개의 공백과 별이 출력되어야 하는지 알아내는 방법도 있다.

profile
연락 : publicminsu@naver.com

0개의 댓글