ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [java] 백준 알고리즘 2448번 별찍기-11 풀이
    알고리즘/백준 알고리즘 2018. 6. 25. 09:38



    별들의 규칙을 보면


    별이 그려진 현재 높이의 반을 했을 때 별 패턴과 현재 높이의 바닥쪽 별의 패턴이 비슷하다.


    높이의 반을 했을 때 별의 패턴을 2배로 하면 현재 높이의 바닥쪽 별 패턴이 같다. 




    입력되는 수는 바닥의 라인까지라고 보면 된다.


    높이의 반을 넘어가는 순간부터는 첫줄부터 높이의 반만큼의 2배 패턴과 같다.


    패턴을 그려주면서 이미 그려진 패턴들은 라인수가 아래로 내려가는 만큼 


    기존의 패턴을 오른쪽으로 밀어주어야 한다.


    구현한 소스는 아래와 같다.



    * 풀이 소스


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    public class Baekjoon2448 {
     
        public static void main(String[] args) throws NumberFormatException, IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
            int N = Integer.parseInt(br.readLine());
            
            printStar(N);
        }
        
        public static void printStar(int n) throws IOException{
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
            
            String[] starArray = new String[n+1];
            starArray[1= "  *  ";
            starArray[2= " * * ";
            starArray[3= "*****";
            
            for(int i=13*Math.pow(2, i)<=n; i++){
                int bottom = (int) (3*Math.pow(2, i)); 
                int middle = bottom/2;
                
                for(int j=middle+1; j<=bottom; j++){
                    starArray[j] = starArray[j-middle] + " " + starArray[j-middle];
                }
                
                String pushSpace = "";
                for(int k=1; k<=middle; k++){
                    pushSpace += " ";
                }
                
                for(int l=1; l<=middle; l++){
                    
                    starArray[l] = pushSpace + starArray[l] + pushSpace;
                }
                
            }
            
            for(int i=1; i<starArray.length; i++){
                bw.write(starArray[i]);
                bw.newLine();
            }
            bw.flush();
            
            
        }
     
    }
     
    cs


Designed by Tistory.