ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [13015] 별 찍기 - 23
    BOJ 2022. 1. 14. 23:47

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

     

    13015번: 별 찍기 - 23

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

    www.acmicpc.net

    <문제>

    첫줄과 마지막줄은 다른 줄과 다르게 특별한 공통점이 없다. 이 부분은 그냥 반복문에서 빼서 직접 구현하자.

    어처피 중간을 기준으로 대칭이니, [1, n)번째 줄까지만 생각해보도록 하면, 

    맨 왼쪽의 공백은 j<i,

    첫번째 '*'과 두번째 '*', 세번째'*'과 네번째 '*' 사이에 존재하는 2번의 공백은 n-2번 포함된다.

    두번째와 세번째 사이의 중앙공백은, 가장 첫번째줄의 공백은 2*n-3번 발생하며,

    한줄당 2개씩 줄어드니 j<(2*n-3)-(2*i)가 되겠다.

     

    n번째 줄인 정 가운데는, '*'이 3번밖에 존재하지 않으므로, 첫번째줄처럼 별도로 구현해주었다.

     

    <소스코드>

    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
    #include <bits/stdc++.h>
    using namespace std;
    int n;
    string ans[101];
    int main(void) {
        cin >> n;
        int i, j;
     
        for (i = 0; i < n; i++) ans[0+= '*';
        for (i = 0; i < 2 * n - 3; i++) ans[0+= ' ';
        for (i = 0; i < n; i++) ans[0+= '*';
     
        for (i = 1; i < n - 1; i++) {
            for (j = 0; j < i; j++) ans[i] += ' ';
            ans[i] += '*';
            for (j = 0; j < n - 2; j++) ans[i] += ' ';
            ans[i] += '*';
            for (j = 0; j < (2 * n - 3- (i * 2); j++) ans[i] += ' ';
            ans[i] += '*';
            for (j = 0; j < n - 2; j++) ans[i] += ' ';
            ans[i] += '*';
        }
     
        int m = n - 1;
        for (i = 0; i < n - 1; i++) ans[m] += ' ';
        ans[m] += '*';
        for (i = 0; i < n - 2; i++) ans[m] += ' ';
        ans[m] += '*';
        for (i = 0; i < n - 2; i++) ans[m] += ' ';
        ans[m] += '*';
     
        for (i = 0; i < n; i++cout << ans[i] << '\n';
        for (i = n - 2; i >= 0; i--cout << ans[i] << '\n';
        return 0;
    }
    cs

     

    'BOJ' 카테고리의 다른 글

    [1774] 우주신과의 교감  (0) 2022.01.15
    [1826] 연료 채우기  (0) 2022.01.15
    [2485] 가로수  (0) 2022.01.12
    [1966] 프린터 큐  (0) 2022.01.12
    [2805] 나무 자르기  (0) 2022.01.12

    댓글