[BOJ]10994 별찍기-19

강동현·2023년 12월 23일
0

코딩테스트

목록 보기
39/111
  • 별찍기 재귀 sol: 피라미를 위에서 본 방향
    별찍기1
    별찍기2
    별찍기3
  • 별찍기 재귀는 대대손손 board를 만드는 방식으로 풀이한다.
  • 점화식을 기반으로 N번째 직사각형 위치의 값을 할당한다.
#include <vector>
#include <iostream>
using namespace std;
int N;
vector<vector<char>> map(401, vector<char>(401, ' '));
void recursive(int x, int y, int n){
    if(n == 1){
        map[x][y] = '*';
        return;
    }
    int len = 4 * n - 3;
    //각 패턴의 양 옆
    for(int i = x; i < x + len; ++i){
        map[i][y] = '*';
        map[i][y + len - 1] = '*';
    }
    //각 패턴의 양 옆
    for(int j = y; j < y + len; ++j){
        map[x][j] = '*';
        map[x + len - 1][j] = '*';
    }
    recursive(x+2, y+2, n-1);
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> N;
    recursive(0, 0, N);//x, y 좌표, 패턴 레벨
    for(int i = 0; i < 4 * N - 3; ++i){
        for(int j = 0; j < 4 * N - 3; ++j){
            cout << map[i][j];
        }
        cout << '\n';
    }
}
profile
GAME DESIGN & CLIENT PROGRAMMING

0개의 댓글