본문 바로가기

IT/Python

[백준] 2448번 별 찍기 - 11 [Python]

728x90

 

 

아래 예제를 보고 규칙을 유추하여 주어진 N$(=3*2^k)$에 대해서 별을 출력하는 문제
24
                       *                        
                      * *                       
                     *****                      
                    *     *                     
                   * *   * *                    
                  ***** *****                   
                 *           *                  
                * *         * *                 
               *****       *****                
              *     *     *     *               
             * *   * *   * *   * *              
            ***** ***** ***** *****             
           *                       *            
          * *                     * *           
         *****                   *****          
        *     *                 *     *         
       * *   * *               * *   * *        
      ***** *****             ***** *****       
     *           *           *           *      
    * *         * *         * *         * *     
   *****       *****       *****       *****    
  *     *     *     *     *     *     *     *   
 * *   * *   * *   * *   * *   * *   * *   * *  
***** ***** ***** ***** ***** ***** ***** *****

 

 

더보기

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N이 주어진다. N은 항상 3×$2^k$ 수이다. $(3, 6, 12, 24, 48, ...)$ $($0 ≤ k ≤ 10, k는 정수$)$

출력

첫째 줄부터 N번째 줄까지 별을 출력한다.

 

초기 별 ['*', "* *", "*****"] 세팅

N 줄에 대해서 가운데 정렬해서 출력한다.

 

$3*2^k$ 마다 기존 별에 두 배를 사이에 공백을 두고 추가해준다...

import sys
input = sys.stdin.readline

N = int(input())
stars = ['*', "* *", "*****"]
ans = []
k = 3
for i in range(N):
    if i == k:
        tmp = []
        for j, star in enumerate(stars):
            tmp.append(star+" "*(2*(i-j)-1)+star)
        stars += tmp
        k *= 2
    ans.append(stars[i].center(2*N-1))
print("\n".join(ans))

 

 

더보기

예제 입력 1 

24

예제 출력 1 

                       *                        
                      * *                       
                     *****                      
                    *     *                     
                   * *   * *                    
                  ***** *****                   
                 *           *                  
                * *         * *                 
               *****       *****                
              *     *     *     *               
             * *   * *   * *   * *              
            ***** ***** ***** *****             
           *                       *            
          * *                     * *           
         *****                   *****          
        *     *                 *     *         
       * *   * *               * *   * *        
      ***** *****             ***** *****       
     *           *           *           *      
    * *         * *         * *         * *     
   *****       *****       *****       *****    
  *     *     *     *     *     *     *     *   
 * *   * *   * *   * *   * *   * *   * *   * *  
***** ***** ***** ***** ***** ***** ***** *****