728x90
728x90

문제

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

 

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

 

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

 

예제 입력 1

5

 

예제 출력 1

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

 

알고리즘 분류

  • 구현

 

문제 출처

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

 

2444번: 별 찍기 - 7

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

 


 

문제 해결 방법

  • [단계별로 풀어보기] 문제집에 새로 추가된 문제이다.
  • 각 줄(@row@)마다 공백의 개수별(*)의 개수가 어떻게 변하는지 분석하여 풀어야 하는 문제이다.

 

코드

#include <iostream>
using namespace std;

int N;

void Input() {
    cin >> N;
}

void Solution(int n) {
    int a, b, c, d;
    for (int row = 1; row < n * 2; row++) {
        // up
        if (row <= n) {
            for (a = 1; a <= n - row; a++) cout << ' ';
            for (b = 1; b <= (2 * n) - (2 * a) + 1; b++) cout << '*';
            cout << '\n';
        }
        // down
        else {
            for (c = 1; c <= row - n; c++) cout << ' ';
            for (d = 1; d <= (2 * n) - (2 * c) + 1; d++) cout << '*';
            cout << '\n';
        }
        
    }
}

void Output() {
    Solution(N);
}

void Solve() {
    Input();
    Output();
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    Solve();

    return 0;
}

 

채점 결과

 

참고

  • [단계별로 풀어보기] > [심화 1]
  • 브론즈III
728x90
728x90