[백준] 별찍기-10

jun·2021년 3월 27일
0
post-thumbnail

유의할점

기본 유형

풀이

별을 만드는 함수와 별을 출력하는 함수 두개로 이루어진다.

별을 바로 출력하게 되면 안된다. → 형식이 이상해짐. 따라서 백터로 별을 담고, 해당 백터를 출력한다.

별을 만드는 함수는 y,x 를 기준으로 별을 담는다.

만약에 size 가 1인 경우. 바로 담으면 된다.

만약에 size가 3n3^n인 경우 (1≤n) 해당 함수를 8번 호출한다. 가운데는 출력하지 않기 때문이다.

코드

C++

#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);
}
profile
Computer Science / Algorithm / Project / TIL

0개의 댓글