2447번: 별 찍기 - 10
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이
www.acmicpc.net
문제 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class boj2447 {
private char[][] starboard;
public void solution() throws IOException {
int n = Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
starboard = new char[n][n];
for (char[] row : starboard){
Arrays.fill(row, ' ');
}
setStar(n, 0, 0);
StringBuilder drawStar = new StringBuilder();
for (int i = 0; i < n; i++) {
drawStar.append(starboard[i]).append('\\n');
}
System.out.println(drawStar);
}
public void setStar(int n, int x, int y ){
// n == 3이라면 실제로 별을 그리기 시작
if (n == 3){
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
// 가운데 지점에선 별을 그리지 않는다.
if (i == 1 && j == 1) continue;
starboard[x + i][y + j] = '*';
}
}
}
// 아니라면 n == 3일때까지 재귀 호출
else {
int offset = n / 3;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
// 가운데 사각형이면 굳이 재귀호출 안해도 된다.
if (i == 1 && j == 1) continue;
setStar(offset, x + offset * i, y + offset * j);
}
}
}
}
public static void main(String[] args) throws IOException {
new boj2447().solution();
}
}
결과
입력 : 27
출력
***************************
* ** ** ** ** ** ** ** ** *
***************************
*** ****** ****** ***
* * * ** * * ** * * *
*** ****** ****** ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
********* *********
* ** ** * * ** ** *
********* *********
*** *** *** ***
* * * * * * * *
*** *** *** ***
********* *********
* ** ** * * ** ** *
********* *********
***************************
* ** ** ** ** ** ** ** ** *
***************************
*** ****** ****** ***
* * * ** * * ** * * *
*** ****** ****** ***
***************************
* ** ** ** ** ** ** ** ** *
***************************
'Algorithm' 카테고리의 다른 글
백준 7662 이중 우선순위 큐 (0) | 2023.07.14 |
---|---|
백준 15903 카드 합체 놀이 (0) | 2023.07.13 |
백준 17829 222-풀링 (0) | 2023.07.12 |
이진 탐색 알고리즘 (0) | 2023.07.11 |
퀵 정렬(Quicksort) 알고리즘 (0) | 2023.07.11 |