[JAVA] 백준 2446번 별찍기 - 9

2D3·2022년 8월 9일
0

백준

목록 보기
9/22

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

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

예제입력 : 5           예제출력
                    *********
                     *******
                      *****
                       ***
                        *
                       ***
                      *****
                     *******
                    *********
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 = 0; k < 2 * num -(2 * i + 1); k++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        for (int i = 0; i < num - 1; i++) {
            for (int j = 1; j < num - 1 - i; j++) {
                sb.append(" ");
            }
            for (int k = 0; k < 3 + (2 * i); k++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

흐름
-`빈칸, 별'을 상부, 하부로 나눠서 for문을 돌림

빈칸
0 - 1 - 2 - 3 - 4
0부터 시작해서 n-1까지 증가했다가
3 - 2 - 1 - 0
다시 0으로 감소


9 - 7 - 5 - 3 - 1
k는 0부터 2n -(2i +1)까지 반복
3 - 5 - 7 - 9
k는 0부터 3+2i까지 반복

수도코드

1. br로 입력값 받아옴
2.상부 for (0부터 시작해서 n보다 작게)
    빈칸 for (0부터 i보다 작게)for (0부터 2n -(2i +1)보다 작게)
   하부 for (0부터 n-1보다 작게)
     빈칸 for (1부터 n-1-i보다 작게)for (0부터 3+2i보다 작게)
profile
return Success;

0개의 댓글