[백준/C++] 2447번 별 찍기 - 10

2021. 4. 27. 17:56알고리즘/재귀

728x90
반응형

문제: www.acmicpc.net/problem/2447

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net

 

 

문제풀이

 

별을 board에 모두 찍어두고 재귀를 이용하여 가운데를 지우는 방식으로 문제를 풀었다.

 

 

코드

#include <iostream>

using namespace std;

char board[6566][6566];

void func(int x, int y, int n){

    if(n==0)
        return;
    
    n /= 3;

    for(int i=x+n; i<x+n*2; i++)
        for(int j=y+n; j<y+n*2; j++){
            board[i][j] = ' ';
        }

    func(x,y,n);
    func(x,y+n,n);
    func(x,y+n*2,n);
    func(x+n,y,n);
    func(x+n,y+n*2,n);
    func(x+n*2,y,n);
    func(x+n*2,y+n,n);
    func(x+n*2,y+n*2,n);
}

int main(){
    int n;
    cin>>n;

    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            board[i][j] = '*';

    func(0,0,n);

    for(int i=0; i<n; i++)
        cout<<board[i]<<"\n";

    return 0;
}

 

 

결과

 

 

728x90
반응형