https://www.acmicpc.net/problem/2448
*
* *
*****
와 빈공간을 자연스럽게 섞어 문제를 풀 수 있다.
for (int i = middle; i < height; i++) {
map[i] = map[i - middle] + " " + map[i - middle];
}
이전에 작은 삼각형을 공백 하나를 사이에 두고 복사함
//이전 배열에 빈 공간 추가
String space = "";
while (space.length() < middle) {
space += " ";
}
for (int i = 0; i < middle; ++i) {
map[i] = space + map[i] + space;
}
이전에 작은 삼각형 왼쪽과 오른쪽에 공백을 추가함
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
String map[] = new String[n];
map[0] = " * ";
map[1] = " * * ";
map[2] = "*****";
for (int k = 1; 3 * (int)Math.pow(2, k) <= n; k++) {
makeBigStar(k, map);
}
for (int i = 0; i < n; i++) {
System.out.println(map[i]);
}
}
private static void makeBigStar(int k, String map[]) {
int height = 3 * (int)Math.pow(2, k);
int middle = height / 2;
for (int i = middle; i < height; i++) {
map[i] = map[i - middle] + " " + map[i - middle];
}
//이전 배열에 빈 공간 추가
String space = "";
while (space.length() < middle) {
space += " ";
}
for (int i = 0; i < middle; ++i) {
map[i] = space + map[i] + space;
}
}
}