-
별 찍기 11 (boj 2448)알고리즘 2020. 6. 3. 22:04728x90
별 찍기11 문제는 분할정복(Divide and conquer) 기법으로 문제를 해결할 수 있습니다.
삼각형 안에 작은 삼각형이 들어있는 꼴이기 때문입니다.
코드
#include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <vector> #define INF 987654321 int N; char arr[5000][10000]; void drawTri(int y, int x) { sprintf(arr[y - 2] + x, " * "); sprintf(arr[y - 1] + x, " * * "); sprintf(arr[y] + x, "*****"); } void draw(int y, int x, int size) { if (size == 0) { drawTri(y, x); return; } int width = pow(2, size - 1) * 6; draw(y, x, size - 1); draw(y, x + width, size - 1); draw(y - width / 2, x + width / 2, size - 1); } int main() { scanf("%d", &N); int size = log2(N / 3); draw(N, 0, size); for (int y = 1; y <= N; y++) { for (int x = 0; x < 2 * N; x++) { if (arr[y][x] == '\0') putchar(' '); else putchar(arr[y][x]); } putchar('\n'); } return 0; }
'알고리즘' 카테고리의 다른 글
용돈관리 (boj 6236) (0) 2020.06.05 쿼드트리 (boj 1992) (0) 2020.06.05 트리의 높이와 너비 (boj 2250) (0) 2020.06.03 수학은 너무 쉬워 (boj 2904) (0) 2020.06.03 MT 문제 (boj 10265) (0) 2020.05.16