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

[BOJ] 백준 10992 별 찍기 - 17

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

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

 Input 
4

 Output 

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

 

▶ [n = 1]

* 한 개 출력.

 

▶  [n > 1]

- 크게 첫번째 줄 / 중간 구역 / 마지막 줄로 구분합니다.

- 각 줄의 끝 별을 각각 left, right로 정의

  (첫번째 줄은 left = right = n-1)

① 첫번째 줄:

     left 이전까지는 공백 출력하고 * 한개 출력

② 중간 구역: 

    ▷ left 이전까지는 공백 출력 후, 별 한개 출력

    ▷ left 와 right 사이에 공백 출력 후 별 한개 출력

③ 마지막 줄:

    ▷ left 부터 right 까지 별 출력

    (※ 입력 받은 n = 2인 경우에는 첫번째 줄과 마지막줄만 존재.)

 

 [문제] 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;
 
int main(void) {
    int n;
    cin >> n;
 
    int left = n - 1, right = n - 1;
 
    // 첫번째 줄
    for (int i = 0; i < left; i++) {
        printf(" ");
    }
    printf("*\n");
    left--; right++;
 
    // 중간 구역
    for (int i = 1; i < n-1; ++i) {
        for (int j = 0; j < left; ++j) {
            printf(" ");
        }
        printf("*");
        for (int j = left+1; j < right; ++j) {
            printf(" ");
        }
        printf("*\n");
        left--; right++;
    }
 
    if (n > 1) {
        // 마지막 줄
        for (int i = left; i <= right; ++i) {
            printf("*");
        }
    }    
}

 

반응형

댓글