[BOJ] 2523번: 별 찍기 -13 (C++)

Pilgyeong_G·2020년 7월 27일
0

BOJ

목록 보기
3/9
post-thumbnail

문제 링크: https://www.acmicpc.net/problem/2523

문제 페이지


for 문을 이용해서 별을 찍는 간단한 문제입니다. 별을 찍는 부분은 for 문을 한 번 더 사용해서 출력해도 됩니다.

#include <iostream>
 
using namespace std;
 
int main()
{
    int star_length;
    cin >> star_length;
 
    for (int i = 1; i <= star_length; i++)
    {
        string s = "";
        s.insert(0, i, '*');
        cout << s << endl;
    }
    for (int i = star_length - 1; i > 0; i--)
    {
        string s = "";
        s.insert(0, i, '*');
        cout << s << endl;
    }
}

여기서 그냥 바로 넘어가기엔 아쉬워서 for 문을 하나만 쓰고 풀 수 있는지 시도해봤습니다.

i가 입력한 star_length보다 크면 출력할 줄의 개수 - i + 1로 한 줄에 들어갈 별의 개수를 계산하고 출력하도록 짜봤습니다.

#include <iostream>
 
using namespace std;
 
int main()
{
    int star_length;
    cin >> star_length;
 
    int max_length = star_length * 2 - 1;
    for (int i = 1; i <= max_length; i++)
    {
        int char_count = i > star_length ? max_length - i + 1 : i;
 
        string s = "";
        s.insert(0, char_count, '*');
        cout << s << endl;
    }
}

0개의 댓글