[백준][Java] 2448번 별 찍기 - 11 (분할정복, 재귀)

[백준][Java] 2448번 별 찍기 - 11 (분할정복, 재귀)

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.util.Arrays;

public class Main {

private static BufferedReader br = new BufferedReader( new InputStreamReader( System . in ));

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

private static char [][] res;

private static boolean isBlank( int i, int j) {

if ( (i = = 0 & & j = = 0 ) | | (i = = 0 & & j = = 1 ) | |

(i = = 0 & & j = = 3 ) | | (i = = 0 & & j = = 4 ) | | (i = = 0 & & j = = 5 ) | |

(i = = 1 & & j = = 0 ) | | (i = = 1 & & j = = 2 ) | | (i = = 1 & & j = = 4 ) | |

(i = = 1 & & j = = 5 ) | | (i = = 2 & & j = = 5 )) {

return true ;

}

else

return false ;

}

private static void star( int x, int y, int unit) {

if (unit = = 3 ) {

for ( int i = 0 ; i < 3 ; i + + ) {

for ( int j = 0 ; j < 6 ; j + + ) {

if ( ! isBlank(i, j))

res[x + i][y + j] = '*' ;

}

}

return ;

}

unit / = 2 ;

star(x + unit, y, unit);

star(x, y + unit, unit);

star(x + unit, y + unit * 2 , unit);

}

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

int N = stoi(br.readLine());

res = new char [N][ 2 * N];

for ( char [] arr : res)

Arrays.fill(arr, ' ' );

star( 0 , 0 , N);

for ( char [] arr : res) {

for ( char c : arr) {

bw.write(c);

}

bw.write( "

" );

}

bw.flush();

bw.close();

}

private static int stoi( String input) {

return Integer. parseInt (input);

}

}

from http://aig2029.tistory.com/318 by ccl(A) rewrite - 2021-10-03 01:01:24