기본 유형
별을 만드는 함수와 별을 출력하는 함수 두개로 이루어진다.
별을 바로 출력하게 되면 안된다. → 형식이 이상해짐. 따라서 백터로 별을 담고, 해당 백터를 출력한다.
별을 만드는 함수는 y,x 를 기준으로 별을 담는다.
만약에 size 가 1인 경우. 바로 담으면 된다.
만약에 size가 인 경우 (1≤n) 해당 함수를 8번 호출한다. 가운데는 출력하지 않기 때문이다.
#include <iostream>
#include <vector>
using namespace std;
void printStar(vector<vector<char>>& arr) {
int x_size = arr[0].size();
int y_size = arr.size();
for (int y = 0; y < y_size; y++) {
for (int x = 0; x < x_size; x++)
printf("%c", arr[y][x]);
printf("\n");
}
return;
}
void makeStar(vector<vector<char>>& arr, int y, int x, int size) {
if (size == 1) {
arr[y][x] = '*';
return;
}
int resize = size / 3;
for (int dy = 0; dy < 3; dy++) {
for (int dx = 0; dx < 3; dx++) {
if (dy == 1 && dx == 1)
continue;
makeStar(arr, y + dy * resize, x + dx * resize, resize);
}
}
}
int main() {
int N;
cin >> N;
vector < vector<char>> arr(N, vector<char>(N, ' '));
makeStar(arr, 0, 0, N);
printStar(arr);
}