학습 정리/👨‍💻 PS Study

[C] 백준 13015번 - 별찍기 23

무딘붓 2022. 7. 7. 10:19

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

 

13015번: 별 찍기 - 23

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

www.acmicpc.net

(21.08.10)

13015번: 별 찍기 23 - C언어 풀이

 

[소스코드]

#include <stdio.h>
// [baekjoon] 13015번 - 별찍기 - 23

int main() {

	int n, i, j;

	scanf("%d", &n);

	for (i = 0; i < 2 * n - 1; i++) {
		if (i == 0 || i == 2 * n - 2) {					// 첫줄, 마지막줄
			for (j = 0; j < n; j++) printf("*");
			for (j = 0; j < 2 * n - 3; j++) printf(" ");
			for (j = 0; j < n; j++) printf("*");
		}
		else if (i == n - 1) {							// 가운데줄
			for (j = 0; j < i; j++) printf(" ");
			printf("*");
			for (j = 0; j < n - 2; j++) printf(" ");
			printf("*");
			for (j = 0; j < n - 2; j++) printf(" ");
			printf("*");
		}
		else if (i < n - 1) {							// 가운데줄 전까지
			for (j = 0; j < i; j++) printf(" ");
			printf("*");
			for (j = 0; j < n - 2; j++) printf(" ");
			printf("*");
			for (j = 0; j < (2 * n) - 3 - (2 * i); j++) printf(" ");
			printf("*");
			for (j = 0; j < n - 2; j++) printf(" ");
			printf("*");
		}
		else {											// 마지막줄 전까지
			for (j = 0; j < (2 * n - 2 - i); j++) printf(" ");
			printf("*");
			for (j = 0; j < n - 2; j++) printf(" ");
			printf("*");
			for (j = 0; j < (i - (n - 1)) * 2 - 1; j++) printf(" ");
			printf("*");
			for (j = 0; j < n - 2; j++) printf(" ");
			printf("*");
		}

		printf("\n");
	}

}

그 동안 별찍기 문제를 푼 방식과 동일하게
별의 개수와 빈칸의 개수의 규칙을 찾아서 풀면 된다.