반응형

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

 

10993번: 별 찍기 - 18

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net

 

오랜만에 별을 찍어봤습니다.

바깥 삼각형부터 시작 기준 점과 삼각형의 크기를 구하고 대각선 방향으로 별을 찍어냈습니다.

#include <cstdio>
#include <cstring>
char s[1023][2046];
int main() {
	int n, r = 1, c = 1, x = 0, y = 0;
	memset(s, ' ', sizeof(s));
	scanf("%d", &n);
	for (int i = 1; i < n; i++) r = r * 2 + 1, c = c * 2 + 3;
	x = n % 2 ? r - 1 : x;
	for (int i = n, rr = r, cc = c; i ; rr /= 2, cc = cc / 2 - 1, x += i % 2 ? -rr : rr, y += rr + 1, i--) {
		for (int j = 0; j < cc; j++) s[x][y + j] = '*';
		for (int j = 1; j < rr; j++)
			s[x + (i % 2 ? -j : j)][y + j] = s[x + (i % 2 ? -j : j)][y + cc - 1 - j] = '*';
	}
	for (int i = 0; i < r; i++) {
		s[i][n % 2 ? c / 2 + 1 + i : c - i] = '\0';
		printf("%s\n", s[i]);
	}
}
반응형

+ Recent posts