문제
풀이
- 전체 별이 그려질 공간을 보면 [3100][6200] 정도가 된다. 받은 N값에 따라 별이 그려질 공간을 분할한다.
- 이 구조의 별을 해당 위치에 그리는 방법으로 해결한다.
코드
#include <iostream>
using namespace std;
int N;
char ground[3100][6200];
char star[3][6] =
{
" * ",
" * * ",
"*****"
};
void insertStar(int n, int x, int y)
{
// 계속 쪼개서 n이 1이라면 별을 입력
if (n == 1)
{
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 5; ++j)
{
ground[x + i][y + j] = star[i][j];
}
}
return;
}
insertStar(n / 2, x, y + 3 * n / 2);
insertStar(n / 2, x + 3 * n / 2, y);
insertStar(n / 2, x + 3 * n / 2, y + 3 * n);
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N;
insertStar(N / 3, 0, 0);
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < 2 * N - 1; ++j)
{
if (ground[i][j] == '*')
{
cout << '*';
}
else
{
cout << " ";
}
}
cout << endl;
}
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준][C++] 2166: 다각형의 면적 (0) | 2023.10.06 |
---|---|
[백준][C++] 13172: Σ (0) | 2023.10.05 |
[백준][C++] 11779: 최소비용 구하기 2 (0) | 2023.10.03 |
[백준][C++] 2638: 치즈 (0) | 2023.10.02 |
[백준][C++] 17144: 미세먼지 안녕! (0) | 2023.10.02 |