본문 바로가기

PS

백준 BOJ 2448 C++ 별 찍기 - 11

#include <bits/stdc++.h>
using namespace std;

char board[3100][6200];

void draw(int x, int y) {
    board[x][y] = '*';
    board[x + 1][y - 1] = '*';
    board[x + 1][y + 1] = '*';
    for (int j = y - 2; j <= y + 2; ++j) {
        board[x + 2][j] = '*';
    }
}

void func(int n, int x, int y) {
    if (n == 3) {
        draw(x, y);
        return;
    }
    int half = n >> 1;
    func(half, x, y);  // 삼각형에서 상단 꼭짓점
    func(half, x + half, y - half);  // 좌측하단 꼭짓점
    func(half, x + half, y + half);  // 우측하단 꼭짓점
}

void solve() {
    memset(board, ' ', sizeof(board));
    int n;
    cin >> n;
    func(n, 0, n - 1);
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < 2 * n - 1; ++j) {
            cout << board[i][j];
        }
        cout << '\n';
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    solve();
    return 0;
}

'PS' 카테고리의 다른 글

백준 BOJ 15649 C++ [N과 M (1)](2)  (0) 2026.04.22
백준 BOJ 15649 C++ [N과 M (1)]  (1) 2026.04.22
백준 BOJ 2447 C++ 별 찍기 - 10  (0) 2026.04.22
백준 BOJ 1780 C++ 종이의 개수  (1) 2026.04.22
백준 BOJ 1074 C++ Z  (0) 2026.04.22