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(); // 종료
}
}
# 입/출력 결과
# 과정
BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
BufferedWriter + OutputStreamWriter 사용해서 출력하기.
int N에 몇 개 별을 출력할지 값을 입력받아 형변환하여 저장.
String star에 "*" 모양을 저장.
String space에 공백 선언 및 초기화.
while문 조건에 사용할 int i에 1값 초기화.
while문 사용하여 계산.
: 조건식에 i <= N을 주어 N번 반복할 수 있게 만들기.
: int j = i를 만들어서 공백을 위한 변수 만들기.
: while문 안에 while문 또 만들기. 공백은 N-j개의 공백을 만들기 위해서.
: int result에 space와 star의 값을 저장.
: .write() 사용해서 result값 모아두기.
: space 초기화 시켜주기.
: star 변수에 덧셈 대입 연산자를 사용하여 "*" 반복때마다 계속 추가해주기.
: 마지막에 i++을 해주기.
while문 밖에서 .flush()를 사용해서 저장되어 있는 데이터를 출력하고 내용 비우기.
.close() 사용해서 종료.
# 느낀 점
이번에는 while문을 사용해서 만들었다.
공백 부분을 어떻게 해결해야하나 고민을 하다가 chat gpt에 물어보니 반복문을 사용해서 만드는 수 밖에 없다고해서 어차피 while문을 사용해서 만들어보기로 한 걸 똑같이 while문을 사용해서 공백을 만들었다.