문제 링크: 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;
}
}