2445: 별 찍기 - 8

2022. 8. 17. 19:36C언어/백준

브론즈 3

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

 

2445번: 별 찍기 - 8

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

 

-결과

 

-코드

#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		for (int j = i; j > 0; j--) printf("*");
		for (int k = 2 * n - 2 * i; k > 0;k--) printf(" ");
		for (int l = i; l > 0; l--)printf("*");
		printf("\n");
	}
	for (int i = n-1; i > 0; i--) {
		for (int j = i; j > 0; j--)printf("*");
		for (int k = 2 * n - 2 * i; k > 0; k--)printf(" ");
		for (int l = i; l > 0; l--)printf("*");
		printf("\n");
	}
	return 0;
}

 

-풀이

*을 출력하고 빈칸을 출력하고 다시 *을 출력하도록 작성해야 한다.

예제를 보면 첫째 줄에는 * 1개, 빈칸 8개, * 1개 출력한다.

둘째 줄에는 * 2개, 빈칸 6개, * 2개 출력한다.

셋째 줄에는 * 3개, 빈칸 4개, * 3개 출력한다.

넷째 줄에는 * 4개, 빈칸 2개, * 4개 출력한다.

다섯번째 줄에는 * 5개, 빈칸 0개, * 5개 출력한다.

*은 i번째 줄이라고 가정했을 때, i개를 출력하도록 for문을 작성하고,

빈칸은 2*n - 2*i만큼 출력하도록 for문을 작성한다. (n은 입력받은 수, i는 i번째 줄을 의미함)

그리고 1~5번째 줄까지 작성하고 나서 1~4번째 줄을 역순으로 다시 출력하게끔 만들기 위해서 안쪽 for문을 똑같이 작성하는 대신 바깥쪽 for문의 범위를 다르게 작성한다. 아래부분은 4~1번째 줄을 출력해야 하기 때문에 i=n-1이라고 선언하고, i>0일때까지만 출력하도록 작성한다.

'C언어 > 백준' 카테고리의 다른 글

2506: 점수계산  (0) 2022.08.25
2455: 지능형 기차  (0) 2022.08.25
2443: 별 찍기 - 6  (0) 2022.08.17
2444: 별 찍기 - 7  (0) 2022.08.13
1574: 공  (0) 2022.08.02