© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

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

BOJ 2523 - 별 찍기 - 13

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

문제

BOJ 2523 - 별 찍기 - 13

정수 N이 주어질 때, 1부터 N까지 증가했다가 다시 1까지 감소하는 개수로 별을 한 줄씩 출력하라.

입력

정수 N이 주어진다 (1 이상 100 이하).

출력

첫째 줄부터 별을 1개, 2개, ..., N개, N-1개, ..., 1개씩 출력한다.

예제

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

풀이

1부터 N까지 증가하는 구간과 N-1부터 1까지 감소하는 구간을 나누어 별을 출력한다.

  1. 첫 번째 반복문에서 i를 1부터 N까지 증가시키며 i개의 별을 출력한다
  2. 두 번째 반복문에서 i를 N-1부터 1까지 감소시키며 i개의 별을 출력한다
  3. StringBuilder에 결과를 모아 한 번에 출력한다

핵심 아이디어: 다이아몬드 패턴을 상승/하강 두 개의 반복문으로 분리하여 구현한다.

코드

package day649;
 
import java.io.*;
 
public class Day629BOJ2523별찍기13 {
  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 = 0; j < i; j++) {
        sb.append('*');
      }
      sb.append('\n');
    }
 
    for (int i = N - 1; i > 0; i--) {
      for (int j = 0; j < i; j++)
        sb.append('*');
      sb.append('\n');
    }
    System.out.println(sb);
  }
}

복잡도

  • 시간: O(N^2) — 별 출력 총 개수가 N^2에 비례
  • 공간: O(N^2) — StringBuilder에 전체 출력 저장