10992번 : 별 찍기 - 17

링크

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

문제

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

입력

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

출력

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

예제 입력 및 출력

풀이법

별 찍기 - 15...랑 비슷한 문제인데 마지막 줄을 출력하는게 좀 다르다.
문제의 예시를 보면 알겠지만 규칙성을 찾을 수 있다.
1번줄은 n - 1개의 외부 공백이 존재하며 2부터 n - 1줄까지는 외부 공백이 n - 1개, 내부 공백이 홀수개(2(i - 1) - 1) 존재한다.
여기까지는 별 찍기 -15 문제와 동일하나.. n번째 줄은 n이 1일때를 제외하고 홀수개를 출력하니 2
n - 1번을 반복해 별을 찍어주면 된다.

풀이 코드

// 10992번 : 별 찍기 - 17

#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    // 첫번째 줄
    for (int i = 0; i < n - 1; i++)
    {
        printf(" ");
    }
    printf("*\n");
    // 2 ~ n - 1번째 줄
    for (int i = 2; i < n; i++)
    {
        //외부 공백
        for (int j = 0; j < n - i; j++)
        {
            printf(" ");
        }
        printf("*");
        //내부 공백
        for (int j = 0; j < 2 * (i - 1) - 1; j++)
        {
            printf(" ");
        }
        printf("* \n");
    }
    // n번째 줄
    if (n != 1)
    {
        for (int i = 0; i < 2 * n - 1; i++)
        {
            printf("*");
        }
    }
    return 0;
}

좋은 웹페이지 즐겨찾기