[백준] No2447 - 별찍기10 (JAVA)



규칙자체는 쉽게 찾아낼 수 있는데 이걸 코드로 어떻게 구현할지 도무지 생각이 안떠올랐다. 재귀를 잘 못써서 더 힘들었다. 그래서 결국 구글링을 해서 답을 찾았다.. (https://st-lab.tistory.com/95)

import java.util.Scanner;
import java.io.*;
public class No2447_별찍기10 {
    static char [][] arr;
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        arr= new char[n][n];
        star(0,0,n,false);

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        for (int i = 0; i < n; i++) {
            bw.write(arr[i]); //한줄씩
            bw.write("\n");
        }
        bw.flush();
        bw.close();

    }


    public static void star(int x, int y, int n, boolean blank) {


        if (blank) { //공백일때
            for (int i=x;i< x+ n ; i++) {
                for (int j=y;j<y+n; j++) {
                    arr[i][j]=' ';
                }
            }
            return ;
        }

        if (n==1) { //더이상 쪼갤 수 없는 블록일때
            arr[x][y]='*';
            return ;
        }

        int size = n/3; //9개짜리 블럭의 크기
        int count=0;
        for (int i= x;i< x + n; i+=size) {
            for (int j=y;j< y+n; j+=size) {
                count++;
                if (count==5) {
                    star(i,j,size,true);
                }
                else {
                    star(i,j,size,false);
                }
            }
        }



        }
    }

좋은 웹페이지 즐겨찾기