# BOJ02448 별 찍기 - 11
https://www.acmicpc.net/problem/2448 (opens new window)
예제를 보고 규칙을 유추한 뒤 별을 찍는다.
# 별
n = 3인 경우
*
* *
*****
n = 24인 경우
*
* *
*****
* *
* * * *
***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * * * * * *
* * * * * * * * * * * * * * * *
***** ***** ***** ***** ***** ***** ***** *****
높이가 n
일 때 밑변은 2 * n - 1
이 된다. 또한 삼각형이 총 3개로 나눠지기 때문에 분할하여 그려간다.
private static void draw(int row, int col, int size) {
if (size == 3) {
map[row][col] = '*';
map[row + 1][col - 1] = '*';
map[row + 1][col + 1] = '*';
map[row + 2][col - 2] = '*';
map[row + 2][col - 1] = '*';
map[row + 2][col] = '*';
map[row + 2][col + 1] = '*';
map[row + 2][col + 2] = '*';
return;
}a
int newSize = size / 2;
// 위 삼각형
draw(row, col, newSize);
// 아래 왼쪽 삼각형
draw(row + newSize, col - newSize, newSize);
// 아래 오른쪽 삼각형
draw(row + newSize, col + newSize, newSize);
}
# 제출 코드
아래는 최종 제출 코드이다.
import java.util.Arrays;
import java.util.Scanner;
public class BOJ2448 {
private static char[][] map;
private static void draw(int row, int col, int size) {
if (size == 3) {
map[row][col] = '*';
map[row + 1][col - 1] = '*';
map[row + 1][col + 1] = '*';
map[row + 2][col - 2] = '*';
map[row + 2][col - 1] = '*';
map[row + 2][col] = '*';
map[row + 2][col + 1] = '*';
map[row + 2][col + 2] = '*';
return;
}
int newSize = size / 2;
// 위 삼각형
draw(row, col, newSize);
// 아래 왼쪽 삼각형
draw(row + newSize, col - newSize, newSize);
// 아래 오른쪽 삼각형
draw(row + newSize, col + newSize, newSize);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
map = new char[n][2 * n - 1];
for (int i = 0; i < n; i++) {
Arrays.fill(map[i], ' ');
}
draw(0, n - 1, n);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < n; i++) {
for (int j = 0; j < 2 * n - 1; j++) {
stringBuilder.append(map[i][j]);
}
stringBuilder.append("\n");
}
System.out.println(stringBuilder);
}
}