문제

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

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

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

예제 입력 1

5

예제 출력 1

*        *
**      **
***    ***
****  ****
**********
****  ****
***    ***
**      **
*        *

풀이

#include <stdio.h>

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

풀 때에는 어떻게 생각했냐면

Screenshot 2024-04-03 at 12.44.57 AM.png

Screenshot 2024-04-03 at 12.45.24 AM.png

Screenshot 2024-04-03 at 12.45.12 AM.png

위 사진은 각각 별찍기 1, 6, 2 입니다. 저희가 출력해야 할 별의 윗부분과 흡사합니다.

별찍기 6을 공백으로 바꾼 다음 1, 6, 2 를 합치면 윗부분이 출력됩니다.

마찬가지 3, 4, 5 를 이용하면 아랫부분도 출력됩니다

바깥 for 반복문이 2개가 있습니다. 첫번째 for 반복문은 윗쪽, 두번째는 아랫쪽을 그립니다.