알고리즘/문제 풀이

백준 13015 - 별 찍기 - 23(C++)

qqlzzb 2022. 3. 22. 22:50

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

 

13015번: 별 찍기 - 23

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

www.acmicpc.net

 

풀이

단순 구현 문제로, 가운데 줄을 제외한 부분이 반복됨을 이용해서 반복되는 부분을 함수로 구현했다.

규칙은 직관적으로(하드코딩ㅎ) 찾아냈고 숫자를 입력해보며 조건들을 추가했다.

각 줄마다 공백 - 별 - 공백 - 별의 구조이므로 각 부분을 for문을 돌면서 출력한다.

 

코드

#include <iostream>
using namespace std;
int n;

void printstar(int i)
{
    for(int a=0;a<i;a++) cout<<" ";
    for(int b=0; b<n; b++)
    {
        if(i==0 || (i!=0&&(b==0||b==n-1))) cout<<"*";
        else cout<<" ";
    }
    for(int c=0; c<n+n-3-(i*2); c++) cout<<" ";
    for(int b=0; b<n; b++)
    {
        if(i==0 || (i!=0&&(b==0||b==n-1))) cout<<"*";
        else cout<<" ";
    }
    cout<<'\n';
}

int main()
{
    cin>>n;

    for(int i=0; i<n-1; i++)
    {
        printstar(i);
    }
    //중간줄
    for(int i=0; i<n-1; i++) cout<<" ";
    for(int i=0; i<n*2-1; i++)
    {
        if(i==0 ||i==n*2-2|| i==n-1) cout<<"*";
        else cout<<" ";
    }
    cout<<'\n';
    
    for(int i=n-2; i>=0; i--)
    {
        printstar(i);   
    }
    
}

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

백준 4673 - 셀프 넘버  (0) 2022.03.29
백준 1475 - 방 번호  (0) 2022.03.23
백준 1929 - 소수 구하기(C++)  (0) 2022.03.21
백준 1927 - 최소 힙  (0) 2022.03.20
백준 1065 - 한수  (0) 2022.03.19