
규칙을 찾아내면 된다.
별이 나오기 전에 공백의 개수는 규칙적이다.
별의 개수도 위치에 따라 규칙적이다.
별이 나오기 전에 공백의 개수는 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;
}
증가하는 부분과 감소하는 부분으로 나누어 풀어도 된다.
또는 공백의 개수에서 규칙을 찾아내어 각 위치에 몇 개의 공백과 별이 출력되어야 하는지 알아내는 방법도 있다.