-- 예전 기록/BOJ

[ BOJ ] 2439 : 별 찍기 - 2 ( BRONZE 4 ) / C, C++, Python, Java

rejo 2023. 9. 8. 09:40

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

입력

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

출력

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

풀이 과정

별 찍기 - 1 문제와는 다르게, 별 앞에 공백이 들어간다.

예제 입력 1을 참고해 5가 입력으로 들어온다고 가정하면,

1번째 줄에는 공백 4개, 별 1개

2번째 줄에는 공백 3개, 별 2개

3번째 줄에는 공백 2개, 별 3개

4번째 줄에는 공백 1개, 별 4개

5번째 줄에는 공백 0개, 별 5개 가 출력된다.

 

즉, i 번째 줄에는 공백 n - i 개, 별 i 개가 출력되도록 반복문을 구성하면 되는 문제이다.

C

#include <stdio.h>

int main(void) {
    int n; scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - i - 1; j++) 
            printf(" ");
        for (int j = 0; j <= i; j++) 
            printf("*");
        printf("\n");
    }
    return 0;
}

C++

#include <iostream>
using namespace std;

int main(void) {
	int n; cin >> n;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n - i - 1; j++) cout << " ";
		for (int j = 0; j <= i; j++) cout << "*";
		cout << endl;
	}
	return 0;
}

Python

import sys
input = sys.stdin.readline

n = int(input().rstrip())
for i in range(1, n+1): 
    print(' '*(n-i), end='')
    print('*'*i)

Java

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n - i - 1; j++) System.out.print(" ");
            for (int j = 0; j <= i; j++) System.out.print("*");
            System.out.println();
        }
    }
}