#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
#include <deque>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <functional>
typedef long long int ll;
using namespace std;
#define INF 1234567890
#define N 200000
const int LIMIT = 1e+9;
int n, m;
char s[4000][7000];
void solve(int n, int x, int y) {
if (n == 3) {
s[y][x] = '*';
s[y+1][x-1] = '*';
s[y+1][x+1] = '*';
s[y+2][x-2] = '*';
s[y+2][x-1] = '*';
s[y+2][x] = '*';
s[y+2][x+1] = '*';
s[y+2][x+2] = '*';
return;
}
solve(n / 2, x, y);
solve(n / 2, x - (n / 2), y + (n / 2));
solve(n / 2, x + (n / 2), y + (n / 2));
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < 2 * n - 1; j++) {
if (j == 2 * n - 1) {
s[i][j] = '\0';
}
else {
s[i][j] = ' ';
}
}
}
solve(n, n - 1, 0);
for (int i = 0; i < n; i++) {
cout << s[i] << "\n";
}
return 0;
}
별 찍기 - 11
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 256 MB | 18409 | 6991 | 4878 | 36.539% |
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, …) (k ≤ 10)
출력
첫째 줄부터 N번째 줄까지 별을 출력한다.
예제 입력 1
24
예제 출력 1
*
* *
*****
* *
* * * *
***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * * * * * *
* * * * * * * * * * * * * * * *
***** ***** ***** ***** ***** ***** ***** *****
출처
- 문제를 만든 사람: baekjoon