본문 바로가기

백준/C++

[Baekjoon/C++] 10992번 - 별 찍기 - 17

[백준] Baekjoon Online Judge

문제로 이동

 

문제

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

 

입력

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

 

출력

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

 


풀이

#include <iostream>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int N;
    cin >> N;

    for (int i = 1; i < N; i++) {
        // 좌측의 빈공간
        for (int j = 0; j < N - i; j++) cout << ' ';

        // 양끝에 *찍기
        for (int j = 0; j < i * 2 - 1; j++) {
            if (j == 0 || j == i * 2 - 2) cout << '*';
            else cout << ' ';
        }
        cout << '\n';
    }

    // 삼각형의 밑면
    for (int i = 0; i < N * 2 - 1; i++) cout << '*';
    
    return 0;
}

 출력해야 하는 답을 좌측의 빈공간, 양끝에 *이 있는 부분, 밑면 이렇게 3개로 나눠서 각 부분을 코드로 구현하였다.

 좌측의 빈공간은 N - 1개의 빈칸으로 구성된 역삼각형이다.

 양끝에 *이 있는 부분은 i번째 줄인 경우 i * 2 - 1개의 문자로 이루어져 있다.

 삼각형의 밑면은 N * 2 - 1개의 *로 구성되어 있다.