코딩 테스트

[코딩테스트] 백준 2439번: 별 찍기 - 2

dev.jelee 2025. 5. 15. 17:34

# 문제

 

# 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
  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()); // 몇 개 별 출력할지.
    int i = 1;
    String star = "*";
    String space = "";

    while (i <= N) {
      int j = i;
      while (0 < (N - j)) { // 공백 계산
        space += " ";
        j++;
      }

      String result = space + star;

      bw.write(result + "\n"); // 결과 모아두기.

      space = ""; // space 초기화.
      star += "*"; // 별 추가.
      i++;
    }

    bw.flush(); // 데이터 출력 및 비우기.
    bw.close(); // 종료
  }
}

 

# 입/출력 결과

 

# 과정

  1. BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
  2. BufferedWriter + OutputStreamWriter 사용해서 출력하기.
  3. int N에 몇 개 별을 출력할지 값을 입력받아 형변환하여 저장.
  4. String star에 "*" 모양을 저장.
  5. String space에 공백 선언 및 초기화.
  6. while문 조건에 사용할 int i에 1값 초기화.
  7. while문 사용하여 계산.
    • : 조건식에 i <= N을 주어 N번 반복할 수 있게 만들기.
    • : int j = i를 만들어서 공백을 위한 변수 만들기.
    • : while문 안에 while문 또 만들기. 공백은 N-j개의 공백을 만들기 위해서.
    • : int result에 space와 star의 값을 저장.
    • : .write() 사용해서 result값 모아두기.
    • : space 초기화 시켜주기.
    • : star 변수에 덧셈 대입 연산자를 사용하여 "*" 반복때마다 계속 추가해주기.
    • : 마지막에 i++을 해주기.
  8. while문 밖에서 .flush()를 사용해서 저장되어 있는 데이터를 출력하고 내용 비우기.
  9. .close() 사용해서 종료.

 

# 느낀 점

  • 이번에는 while문을 사용해서 만들었다.
  • 공백 부분을 어떻게 해결해야하나 고민을 하다가 chat gpt에 물어보니 반복문을 사용해서 만드는 수 밖에 없다고해서 어차피 while문을 사용해서 만들어보기로 한 걸 똑같이 while문을 사용해서 공백을 만들었다.
  • 재밌다!!