[JAVA] 백준 2443번 (별찍기 -6)

문제: 첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, …, N번째 줄에는 별 1개를 찍는 문제. 별은 가운데를 기준으로 대칭이어야 한다.

입력: 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력: 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

입력예시: 5
출력예시:
*********
 *******
  *****
   ***
    *

만들어야 되는 것

빈칸: 0->1->2->3->4 (1 늘어남 == i씩 늘어남)
별: 9   ->   7   ->   5   ->   3    ->  1
    2n-1    2n-2-1   2n-4-1   2n-6-1    2n-8-1  =>2n-2i-1 ==2(n-i)-1
n=5
i=  0        1        2        3        4
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(br.readLine());
        br.close();

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i <= num; i++) {
            for (int j = 0; j < i; j++) {
                sb.append(" ");
            }
            for (int k = 1; k <= 2*(num-i)-1; k++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

흐름

  1. BufferedReader를 사용해 숫자(num)를 입력받음
  2. for문을 사용해 num만큼 반복
  3. 빈칸 입력 for문 (0부터 i보다 작게 반복)
  4. 별 입력 for문 (k는 1부터 시작해서 2(n-i)-1까지 반복