본문 바로가기
Algorithm

(BOJ) 2447 풀이

by snwo 2022. 2. 24.
#include<bits/stdc++.h>

using namespace std;
char sqare[2188][2188];
void make(int n,int x,int y){
    if(n==1){
        sqare[x][y]='*';
        return;
    }
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            if(i==1&&j==1)
                continue;
            make(n/3,n/3*i+x,n/3*j+y);
        }
    }
}
int main(void){
    ios::sync_with_stdio(0);cin.tie(0);
    int N;
    cin >> N;
    for(int i=0;i<N;i++){
        fill(&sqare[i][0],&sqare[i][N],' ');
    }
    make(N,0,0);
    for(int i=0;i<N;i++){
        cout << sqare[i] << '\n';
    }
}

// 3
// ***
// * *
// ***

// 9
// *********
// * ** ** *
// *********
// ***   ***
// * *   * *
// ***   ***
// *********
// * ** ** *
// *********

함수원형

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

n : 현재 구역 크기

x : 행

y : 열

 

base condition

n==1 일 때, ar[x][y]=’*’

재귀식

반복문을 3x3 형태로 돌면서 가운데를 제외하고 좌표를 구해 재귀함수를 호출한다.

좌표는 n/3*(i or j) + (x or y) 으로 구할 수 있다.