BOJ_2448_별 찍기 11_java
2022. 12. 28. 16:31ㆍAlgorithm/BOJ
728x90
https://www.acmicpc.net/problem/2448
2448번: 별 찍기 - 11
첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수)
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
백준 2448 별 찍기 - 11
골드 4
*/
public class BOJ_2448_별찍기11 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] map = new String[N];
map[0] = " * ";
map[1] = " * * ";
map[2] = "*****";
for (int k = 1; 3 * (int)Math.pow(2, k) <= N; k++) {
drawStar(k, map);
}
for (int i = 0; i < N; ++i) {
System.out.println(map[i]);
}
}
private static void drawStar(int k, String map[]) {
int nowBottom = 3 * (int)Math.pow(2, k);
int beforeBottom = nowBottom / 2;
for (int i = beforeBottom; i < nowBottom; i++) { // 이전에 그린 삼각형 2개 복사
map[i] = map[i - beforeBottom] + " " + map[i - beforeBottom];
}
// 모든 행에 빈공간 추가
StringBuilder sb = new StringBuilder();
while (sb.length() < beforeBottom) {
sb.append(" ");
}
for (int i = 0; i < beforeBottom; ++i) {
map[i] = sb.toString() + map[i] + sb.toString();
}
}
}
'Algorithm > BOJ' 카테고리의 다른 글
BOJ_12852_1로 만들기 2_java (0) | 2023.01.10 |
---|---|
BOJ_14938_서강그라운드_java (0) | 2023.01.09 |
BOJ_13172_Σ_java (0) | 2023.01.06 |
BOJ_1406_에디터_java (0) | 2022.12.27 |
BOJ_2193_이친수_java (0) | 2022.12.22 |