본문 바로가기

백준

[백준] 별 찍기 - 8

728x90

코드 힌트

  1. 출력되는 행과 열:
    • 별의 출력은 총 n*2 - 1개의 행과 n*2개의 열로 이루어져 있습니다.
    • 각 행에서 양쪽 끝에 별이 출력되며, 별의 개수는 첫 번째 행에서 마지막 행으로 갈수록 점점 줄어듭니다.
  2. 별이 증가하는 구간:
    • 별이 증가하는 구간은 첫 번째 행부터 n-1번째 행까지입니다.
    • 이때는 i가 작을수록 별의 개수가 많고, i >= j 또는 n*2 - i - 1 <= j인 경우에 별을 출력합니다.
  3. 별이 감소하는 구간:
    • 별이 감소하는 구간은 n번째 행 이후부터 시작하여 마지막 행까지입니다.
    • i >= n인 경우, i < j 또는 2 * n - 1 - i > j일 때 별을 출력합니다.
  4. 공백 처리:
    • 별을 출력하지 않는 부분은 공백을 출력하여 별의 형태를 만들기 위한 영역입니다.
    • 조건에 맞지 않는 부분에는 공백(" ")을 출력합니다.

 


정답은 더보기 클릭

더보기
import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int n = Integer.parseInt(in.nextLine()); // 사용자로부터 별의 최대 크기 n 입력 받기
        
        // 총 출력할 행의 개수는 n*2 - 1
        for (int i = 0; i < n * 2 - 1; i++) {
            // 각 행에서 출력할 열의 개수는 n*2
            for (int j = 0; j < n * 2; j++) {
                
                // 별이 증가하는 구간
                if (i < n) {
                    // i번째 행에서 j번째 열의 별 출력 조건 (i번째 행의 왼쪽 별과 오른쪽 별을 출력)
                    if (i >= j || n * 2 - i - 1 <= j) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                
                // 별이 감소하는 구간
                else {
                    // i번째 행에서 j번째 열의 별 출력 조건 (i번째 행의 왼쪽 별과 오른쪽 별을 출력)
                    if (i < j || 2 * n - 1 - i > j) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
            }
            // 한 줄이 끝나면 줄 바꿈
            System.out.println();
        }
    }
}
728x90

'백준' 카테고리의 다른 글

[백준] 균형잡힌 세상 (4949번)  (0) 2024.09.23
[백준] 보물 (1026번)  (0) 2024.09.20
[백준] 북극곰은 괄호를 찢어 (25918번)  (1) 2024.09.13
[백준] 다음 소수 (4134번)  (2) 2024.09.04
[백준] 가로수 (2485번)  (1) 2024.09.04