본문 바로가기

백준/JAVA

[Baekjoon/JAVA] 2442번 - 별 찍기 - 5

Baekjoon Online Judge

문제로 이동

 

문제

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

별은 가운데를 기준으로 대칭이어야 한다.

 

입력

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

 

출력

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

 


예제 입력 예제 출력
5      *
   ***
  *****
 *******
*********

풀이

import java.util.Scanner;

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

        int N = in.nextInt();

        // 첫째 줄부터 N번째 줄까지 차례대로 별을 출력
        for (int i = 1; i <= N; i++) {
            for (int j = 0; j < N - i; j++) // 공백 출력
                System.out.printf(" ");

            for (int j = 0; j < 2 * i - 1; j++) // 별 출력
                System.out.printf("*");

            System.out.println();
        }
    }
}

별 앞에 오는 공백의 수는 (가장 아랫층의 별의 수 / 2 - 몇 번째 줄(i))이다. 여기서 가장 아랫층의 별의 수 / 2는 입력 받는 N과 같으므로 공백의 개수는 N - i이다.

그리고 별의 개수는 (몇 번째 줄(i) * 2 - 1)이므로 2 * i - 1가 된다.