본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 10994 별 찍기 - 19

by 까망 하르방 2021. 2. 26.
반응형

출처: www.acmicpc.net/problem/10994

 Input 
3

 Output 

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

별들이 그려지는 규칙을 파악하여 구현하는 문제.

Input data의 변화를 보면 쉽게 규칙을 확인할 수 있습니다.

≥ 2인 경우 * 로 □ 형태로 둘러 싸인것을  확인할 수 있습니다.

바깥쪽 테두리부터 안쪽 테두리까지 재귀적으로 별을 그려나갑니다.

 

[n = 3]

- 각 테두리의 길이 len = 4 * (n - 1) + 1;

- 좌측 상단 지점을 (x, y)를 기준점 설정

① n = 3일 때, (0, 0)에서 길이 9의 테두리를 가집니다.

    len = 4 * (3 - 1) + 1 = 9

② n = 2일 때, (2, 2)에서 길이 5의 테두리를 가집니다.

    len = 4 * (2 - 1) + 1 = 5

③ n = 1일 때, (4, 4)에서 별을 그리고 return

 

 [문제] BOJ 별 찍기 시리즈

 

[문제] BOJ 별 찍기 시리즈

[BOJ] 2438 별 찍기 - 1 [BOJ] 2439 별 찍기 - 2 [BOJ] 2440 별 찍기 - 3 [BOJ] 2441 별 찍기 - 4 [BOJ] 2442 별 찍기 - 5 [BOJ] 2443 별 찍기 - 6 [BOJ] 2444 별 찍기 - 7 [BOJ] 2445 별 찍기 - 8 [BOJ] 2446 별..

zoosso.tistory.com


#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
 
char map[500][500];
 
void drawStar(int n, int x, int y) {
    if (n == 1) {
        map[x][y] = '*';
        return;
    }
 
    int len = 4 * (n - 1) + 1;
    
    // 위, 아래 가로선
    for (int j = y; j < y + len; j++) {
        map[x][j] = '*';
        map[x + len - 1][j] = '*';
    }
 
    // 좌, 우 세로선
    for (int i = x; i < x + len; i++) {
        map[i][y] = '*';
        map[i][y + len - 1] = '*';
    }
 
    // n을 줄여가면 재귀적으로 수행
    drawStar(n - 1, x + 2, y + 2);
    return;
}
 
int main(void) {
 
    int n;
    cin >> n;
 
    // 공백으로 초기화
    for (int i = 0; i < 4 * (n - 1) + 1; i++) {
        for (int j = 0; j < 4 * (n - 1) + 1; j++) {
            map[i][j] = ' ';
        }
    }
 
    drawStar(n, 0, 0);
 
    // 출력
    for (int i = 0; i < 4 * (n - 1) + 1; i++) {
        for (int j = 0; j < 4 * (n - 1) + 1; j++) {
            cout << map[i][j];
        }
        cout << '\n';
    }
    return 0;
}

 

반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 10993 별 찍기 - 18  (0) 2021.02.26
[BOJ] 백준 10997 별 찍기 - 22  (0) 2021.02.26
[BOJ] 백준 1405 미친 로봇  (0) 2021.02.26
[BOJ] 백준 1063 킹  (0) 2021.02.26
[BOJ] 백준 3985 롤 케이크  (0) 2021.02.26

댓글