백준
[백준] 2448 별 찍기 - 11 [자바]
거북이같은곰
2022. 4. 25. 19:07
[백준] 2447번 : 별 찍기 - 10 - JAVA [자바]
www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백..
st-lab.tistory.com
https://www.acmicpc.net/board/view/26520
글 읽기 - ★☆★☆★ [필독] 별찍기 - 11 FAQ ★☆★☆★
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static StringBuilder sb = new StringBuilder();
static int N;
static char[][] arr;
public static void main(String arg[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new char[N][N*2-1];
for(int i = 0; i < N; i++) {
for(int j = 0; j < N*2-1; j++) {
arr[i][j] = ' ';
}
}
func(N, N-1, 0);
for(int i = 0; i < N; i++) {
for(int j = 0; j < N*2-1; j++) {
sb.append(arr[i][j]);
}
sb.append('\n');
}
System.out.println(sb.toString());
}
static void star(int rx, int ry) {
arr[rx][ry] = '*';
arr[rx+1][ry-1] = '*';
arr[rx+1][ry+1] = '*';
for(int i = 0; i < 5; i++) {
arr[rx+2][ry-2+i] = '*';
}
}
static void func(int depth, int first_space, int start_x) {
if(depth == 3) {
star(start_x, first_space);
return;
}
int size = depth/2;
func(size, first_space, start_x); // 6 12 0
func(size, first_space-size, start_x+size);
func(size, first_space+size, start_x+size);
}
}