본문 바로가기

개발/백준

[백준] 2448번. 별 찍기-11 (C++)

문제

https://www.acmicpc.net/problem/2448


풀이

[재귀]

좌표 찍어보다 보면 규칙이 보인다.

동그라미 친 부분을 재귀로 돌면서

별을 찍으면 된다.

 

히히 삼각형 이쁘다~


코드

#include <iostream>
using  namespace std;

int arr[8000][8000] = { 0 };

void star(int n, int x, int y) {
	if (n == 3) {
    	//삼각형 그리기
		arr[y][x] = 1;
		
		arr[y + 1][x - 1] = 1;
		arr[y + 1][x + 1] = 1;

		arr[y + 2][x - 2] = 1;
		arr[y + 2][x + 2] = 1;
		arr[y + 2][x - 1] = 1;
		arr[y + 2][x + 1] = 1;
		arr[y + 2][x] = 1;

		return;
	}

	star(n / 2, x, y);
	star(n / 2, x - n / 2, y + n / 2);
	star(n / 2, x + n / 2, y + n / 2);

}
int main() {
	//INPUT
	int N; cin >> N;

	//CHECK
	star(N, N - 1, 0);

	//RESULT
	for (int i = 0; i < N; i++) {
		for (int k = 0; k < N * 2-1; k++) {
			char result = (arr[i][k] == 1) ? '*' : ' ';
			cout << result;
		}
		cout << "\n";
	}
	
}