import java.io.*;
class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String star = "";
for (int i = 0; i < N; i++) {
for (int j = N - 1; j > i; j--) {
star += " ";
}
for (int k = 0; k <= (i * 2); k++) {
star += "*";
}
star += "\n";
}
System.out.println(star);
}
}
해결방법
이번 문제는 가운데 별을 기준으로 양쪽의 별의 개수가 같게 출력되어야 한다.
하지만 자세히 살펴보면 이전에 풀었던 별 찍기 문제를 응용하는 문제이다.
첫 반복문은 총 5행으로 이루어져 있기 때문에 N개의 반복 횟수만큼 조건을 설정하였다.
두 번째 반복문은 j가 N-1 크기부터 j가 i보다 값이 크면 공백문자를 추가하였다. 이렇게 하면 위의 예제와 같이 공백의 개수가 i 크기가 커짐에 따라 줄어드는 것을 확인할 수 있다.
세 번째 반복문은 별을 출력하기 위한 반복문으로, 별의 개수는 홀수개로 이루어져 있으므로 k는 0부터 i*2의 값과 k가 작거나 같을 경우를 조건으로 하여 별을 출력하였다. 이렇게 하면 i가 0일 경우 한 개의 별을 찍게 되고, i가 증가함에 따라 2개씩 증가하는 것을 확인할 수 있다.