🐣 알고리즘 삐약/💻 백준 삐약

96 삐약 : 백준 2447 | 별 찍기 - 10 [바킹독| 재귀 |JAVA]

우주수첩 2024. 9. 15. 16:00
728x90

https://www.acmicpc.net/problem/2447

 

package BKD_0x0B_Recursion;

import java.io.*;

public class BOJ_2447 {

    static char[][] arr;
    public static void main(String[] args) throws IOException{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());

        arr = new char[N][N];

        stars(0,0,N);

        for(char[] arr_1 : arr){
            for(char val : arr_1){
                if(val!='*'){
                    bw.write(' ');
                }else{
                    bw.write(val);

                }
            }
            bw.write('\n');
        }
        bw.flush();
        bw.close();
    }

    static void stars(int x, int y, int n) {
        if (n == 1) {
            arr[x][y] = '*';
            return;
        }

        int newN = n / 3;

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                // 중앙 블록일 때는 공백을 채운다
                if (i == 1 && j == 1) {
                    arr[i][j]=' ';
                    continue;
                };

                // 중앙이 아닐 때는 재귀 호출하여 별을 그린다
                stars(x + i * newN, y + j * newN, newN);
            }
        }
    }
}

 

 

728x90