이 문제도 2 영역으로 나누어 해결하면 쉽게 출력할 수 있다.
for문을 정할 때 별의 숫자를 기준으로 돌린다고 생각하면 된다.
위쪽을 출력할 for문은 초기값은 N, 조건은 0보다 클 때까지 돌면서 출력할 것이다.
이 문제에서는 오른쪽 공백을 고민하지 않아도 된다. 즉, 앞에 공백을 출력할 방법만을 생각한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i = N; i > 0; i--) {
for(int j = N; j > i; j--) {
sb.append(" ");
}
for(int j = 0; j < 2 * i - 1; j++) {
sb.append("*");
}
sb.append("\n");
}
for(int i = 2; i <= N; i++) {
for(int j = N; j > i; j--) {
sb.append(" ");
}
for(int j = 0; j < 2 * i - 1; j++) {
sb.append("*");
}
sb.append("\n");
}
System.out.println(sb);
}
}
for(int i = N; i > 0; i--) {
for(int j = N; j > i; j--) {
sb.append(" ");
}
for(int j = 0; j < 2 * i - 1; j++) {
sb.append("*");
}
sb.append("\n");
}
for(int i = 2; i <= N; i++) {
for(int j = N; j > i; j--) {
sb.append(" ");
}
for(int j = 0; j < 2 * i - 1; j++) {
sb.append("*");
}
sb.append("\n");
}