이런 구조라고 생각하고 분할 정복 알고리즘을 사용하면 답은 풀린다. arraylist를 사용했는데 2차원 배열을 사용해도 풀릴것 같다.
package BAEKJOON;
import java.util.ArrayList;
import java.util.Scanner;
public class TriangleStar_2448 {
static int n;
public static String makeSpace(int n) {
String r = "";
for (int i = 0; i < n; i++) {
r += " ";
}
return r;
}
public static ArrayList<String> makeStar(int k) {
if (k == 3) {
ArrayList<String> r = new ArrayList<String>();
r.add(" * ");
r.add(" * * ");
r.add("*****");
return r;
} else {
ArrayList<String> r = new ArrayList<String>();
ArrayList<String> rSub = makeStar(k / 2);
for (int i = 0; i < rSub.size(); i++) {
r.add(makeSpace(k / 2) + rSub.get(i) + makeSpace(k / 2));
}
for (int i = 0; i < rSub.size(); i++) {
r.add(rSub.get(i) + " " + rSub.get(i));
}
return r;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
sc.close();
ArrayList<String> r = makeStar(n);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < r.size(); i++) {
sb.append(r.get(i) + "\n");
}
System.out.println(sb.toString());
// Stringbuilder 말고 String 으로 + 연산 해주면 통과 못한다...
}
}
'알고리즘' 카테고리의 다른 글
백준 토마토-7576 (0) | 2020.11.08 |
---|---|
백준 Z-1074 (0) | 2020.11.08 |
백준 설탕 배달-2839 (0) | 2020.11.08 |
백준 별 찍기10-2447 (0) | 2020.11.08 |
백준 쿼드트리-1992 (0) | 2020.11.08 |