문제
N이 주어질 때, 삼각형의 외곽만 별로 출력하되, 마지막 줄은 2*N-1개의 별을 모두 출력하라.
입력
정수 N이 주어진다 (1 이상 100 이하).
출력
N줄에 걸쳐 삼각형 테두리를 출력한다.
예제
| 입력 | 출력 |
|---|---|
3 | * * * ***** |
풀이
첫 줄, 중간 줄, 마지막 줄을 분기하여 처리한다.
- 마지막 줄은
2*N-1개의 별을 모두 출력한다 - 첫 줄은 앞쪽 공백 후 별 하나를 출력한다
- 중간 줄은 양 끝에만 별을, 사이는 공백으로 채운다
핵심 아이디어: 삼각형 테두리 패턴에서 마지막 줄만 밑변으로 꽉 채우는 변형이다.
코드
#include <iostream>
using namespace std;
int main()
{
int num;
cin >> num;
for (int i = 1; i <= num; i++)
{
if (i == num)
{
for (int i = 1; i <= 2 * num - 1; i++)
cout << "*";
}
else
{
for (int j = num - i; j > 0; j--)
{
cout << " ";
}
cout << "*";
if (i != 1)
{
for (int j = 1; j <= (i - 1) * 2 - 1; j++)
{
cout << " ";
}
cout << "*";
}
}
cout << endl;
}
return 0;
}복잡도
- 시간: O(N^2)
- 공간: O(1)