알고리즘/문제 풀이

10994번: 별 찍기 - 19

Themion 2022. 1. 3. 15:48

https://www.acmicpc.net/problem/10994

 

10994번: 별 찍기 - 19

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

www.acmicpc.net

가장 큰 사각형의 변의 길이는 4 * N - 3이고, 가장 큰 사각형부터 변 길이를 4씩 줄여나가며 재귀적으로 저장한 뒤 저장한 결과를 출력한다.

#include <cstdio>

#define MAX_N 100

int main() {
    // 정사각형 도형을 저장할 공간
    bool ans[MAX_N * 4 + 1][MAX_N * 4 + 1] = {{ 0, }};
    // 정사각형 도형의 한 변의 길이
    int N;

    // 입력받은 값을 정사각형의 한 변의 길이로 바꾼 뒤 N 갱신
    scanf("%d", &N);
    N = 4 * (N - 1);

    // 가장 큰 사각형부터 변 길이를 2 * 2씩 줄여나가며 저장
    for (int a = 0; a <= N / 2; a += 2) for (int i = a; i <= N - a; i++)
        ans[i][a] = ans[a][i] = ans[N - i][N - a] = ans[N - a][N - i] = 1;

    // ans[i][j]값이 true면 *을, 아니라면 공백을 출력
    for (int i = 0; i <= N; i++) {
        for (int j = 0; j <= N; j++) printf("%c", ans[i][j] ? '*' : ' ');
        printf("\n");
    }

    return 0;
}

'알고리즘 > 문제 풀이' 카테고리의 다른 글

10996번: 별 찍기 - 21  (0) 2022.01.03
10995번: 별 찍기 - 20  (0) 2022.01.03
10993번: 별 찍기 - 18  (0) 2022.01.03
10992번: 별 찍기 - 17  (0) 2022.01.03
10991번: 별 찍기 - 16  (0) 2022.01.03