(구) solved ac class 문제들/class 1

[class 1]백준 별 찍기 - 2(2439번) 풀이 (C++/Python)

isekaipudding 2026. 4. 15. 12:08

문제 : 별 찍기 - 2(2439번)(Bronze IV)

문제 링크 : https://www.acmicpc.net/problem/2439
출처 : Baekjoon Online Judge

 

별 찍기 - 1에서는 그냥 단순하게 i번째 루프일 때 "*"를 i번 반복 출력하면 끝나는 문제입니다.

하지만 이 문제는 조금 생각해야 합니다.

자, 이제 이 문제는 Bronze V가 아닌 Bronze IV라서 조금 더 생각해야 합니다.

 

우선 n = 5일 때 총 5개의 루프가 존재합니다.

1번째 루프 : " " 4개 + "*" 1개

2번째 루프 : " " 3개 + "*" 2개

3번째 루프 : " " 2개 + "*" 3개

4번째 루프 : " " 1개 + "*" 4개

5번째 루프 : " " 0개 + "*" 5개

 

이것을 통해 i번째 루프일 때 규칙을 발견할 수 있습니다.

i번째 루프 : " " (n - i)개 + "*" i개

이 규칙을 바탕으로 C++로 구현합니다.

#include <bits/stdc++.h>
 
using namespace std;
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    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; j++) cout << "*";
        cout << "\n";
    }

    return 0;
}

여기서 i는 루프 번호이며 j는 반복 횟수를 의미합니다.

이 때 개행 문자(\n)는 잊지 말아주세요.

 

이것을 Python으로 구현하면 다음과 같습니다.

import sys

input = sys.stdin.readline

N:int = int(input().rstrip())

for i in range(1, N+1, 1) :
    print(" " * (N - i) + "*" * i)