예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
별의 규칙대로 숫자에 맞게 찍어보자.
먼저 별의 패턴을 파악해보자.
별은
*
**
***
****
*****
위 패턴과
****
***
**
*
이 패턴의 합의 대칭으로 볼 수 있다.
따라서 각각의 패턴들을 출력하는 코드를 합친 뒤 대칭이 되도록 별 출력 부분을 더해주면 된다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int num;
cin >> num;
for (int i=0; i<num; i++){
// 별 출력
for (int j=0; j<=i; j++)
cout << '*';
// 띄어쓰기 출력
for (int j=(num-1)*2; j>i*2; j--)
cout << ' ';
// 별 출력
for (int j=0; j<=i; j++)
cout << '*';
cout << '\n';
}
for (int i=0; i<num-1; i++){
for (int j=num-1; j>i; j--)
cout << '*';
for (int j=0; j<=i*2+1; j++)
cout << ' ';
// 별 출력
for (int j=num-1; j>i; j--)
cout << '*';
cout << '\n';
}
}
별의 출력을 쪼갠뒤 합치는 분할 정복같은 느낌의 문제였다.