© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 2522 - 별 찍기 - 12

2023-10-07
BOJ
브론즈 III
java
원본 문제 보기
구현

문제

BOJ 2522 - 별 찍기 - 12

N이 주어지면 오른쪽 정렬된 모래시계 형태의 별 패턴을 출력한다. 1개부터 N개까지 늘어난 뒤 다시 줄어든다.

입력

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

출력

2*N-1줄에 걸쳐 별을 출력한다.

예제

입력출력
3 * ** *** ** *

풀이

윗부분(별이 1N개로 증가)과 아랫부분(별이 N-11개로 감소)으로 나누어 오른쪽 정렬 패턴을 출력한다.

  1. 윗부분: i행에서 (N-i)개의 공백 후 i개의 별을 출력한다 (i: 1→N)
  2. 아랫부분: i행에서 i개의 공백 후 (N-i)개의 별을 출력한다 (i: 1→N-1)
  3. StringBuilder로 모아 한 번에 출력한다

핵심 아이디어: 각 행의 공백 수 = N - 해당 행의 별 수로 계산하여 오른쪽 정렬 효과를 낸다.

코드

package day699;
 
import java.io.*;
 
public class Day652BOJ2522별찍기12 {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i <= n; i++) {
      for (int j = n - i; j > 0; j--)
        sb.append(" ");
      for (int j = 1; j <= i; j++)
        sb.append("*");
      sb.append("\n");
    }
    for (int i = 1; i <= n - 1; i++) {
      for (int j = 1; j <= i; j++)
        sb.append(" ");
      for (int j = 1; j <= n - i; j++)
        sb.append("*");
      sb.append("\n");
    }
    System.out.print(sb);
  }
}

복잡도

  • 시간: O(N^2)
  • 공간: O(N^2)