[JAVA] 별찍기 7

NoHae·2025년 8월 19일

백준

목록 보기
66/106

문제 출처

단계별로 풀어보기 > 심화 1 > 별찍기 7
https://www.acmicpc.net/problem/2444

문제 설명

예제를 보고 규칙을 유추 후 별을 찍어 보기.

접근 방법

규칙으로 1층에 1, 2층에 3, 3층에 5 ~~의 갯수가 되므로, 층을 i층이라 가정할 때 별의 갯수는 2(i-1)+1이 된다.

또한, 공백은 주어진 값(N) - 현재 층(i) 갯수 만큼 앞에 추가 된다.

이후 주어진 값(N)층 이후에는 반복문 조건을 반대로 진행하면 된다.

import java.io.*;

public class 별찍기_7 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();

        for(int i = 1; i <= N; i++){
            for(int j = 0; j < N-i; j++) sb.append(" ");
            for(int j = 0; j < 2*i-1; j++) sb.append("*");
            sb.append("\n");
        }
        for(int i = N-1; i >= 1; i--){
            for(int j = 0; j < N-i; j++) sb.append(" ");
            for(int j = 0; j < 2*i-1; j++) sb.append("*");
            sb.append("\n");
        }

        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();
    }
}

알게된 점

공백을 추가하고, 별을 추가한다는 개념을 가지고 진행하면 쉽게 풀리는 문제이다.
처음 풀이할 때는 별 찍기 이후에 어떻게 또 공백을 추가하지 생각했지만, 해당하는 조건이 없으므로, 그냥 공백 추가 후 별 추가한다. 라는 개념만 알면 편하게 풀 수 있다.

시간 복잡도는 2중 for문이 삽입 되어있으므로, O(n^2) 이다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글