본문 바로가기
알고리즘/백준

[백준 2448] 별 찍기 - 11

by RoJae 2019. 3. 20.

생각보다 난 별 찍기를 못하는 것 같다.

꽤 오랜시간 동안, 해맨 문제.


출처 : https://www.acmicpc.net/problem/2448

문제

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

입력

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

출력

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

예제 입력 1

24

예제 출력 1

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


소스코드

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
#include<iostream>
 
using namespace std;
 
char star[3072][6144];
 
void draw(int x, int y, int size){
    if(size != 3){
        draw(x, y, size/2);                        // 현재 위치 별 그림  
        draw(x-size/2, y+size/2size/2);        // 왼쪽 아래 별 그림     
        draw(x-size/2+size, y+size/2,size/2);    // 오른쪽 아래 별 그림 
    }
    else {
        star[y][x] = '*';
        star[y+1][x-1= '*';
        star[y+1][x] = ' ';
        star[y+1][x+1= '*';
        star[y+2][x-2= '*';
        star[y+2][x-1= '*';
        star[y+2][x] = '*';
        star[y+2][x+1= '*';
        star[y+2][x+2= '*'
    }
    return;
}
int main(){
    int n;
    cin >> n;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < 2*n-1; j++){
            star[i][j] = ' ';             // 공백 초기화 
        }
    }
    draw(n-1,0,n);
    for(int i = 0; i < n; i++){
        for(int j = 0; j < 2*n-1; j++){
            cout << star[i][j];
        }
        cout << '\n';
    }
    return 0;
}
cs



※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다.

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1517] 버블 소트  (0) 2019.03.21
[백준 1074] Z  (0) 2019.03.21
[백준 2447] 별 찍기 - 10  (0) 2019.03.20
[백준 1992] 쿼드트리  (0) 2019.03.20

댓글