© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 10992 - 별 찍기 - 17

2024-10-10
BOJ
브론즈 III
cpp
원본 문제 보기
구현

문제

BOJ 10992 - 별 찍기 - 17

N이 주어질 때, 삼각형의 외곽만 별로 출력하되, 마지막 줄은 2*N-1개의 별을 모두 출력하라.

입력

정수 N이 주어진다 (1 이상 100 이하).

출력

N줄에 걸쳐 삼각형 테두리를 출력한다.

예제

입력출력
3 * * * *****

풀이

첫 줄, 중간 줄, 마지막 줄을 분기하여 처리한다.

  1. 마지막 줄은 2*N-1개의 별을 모두 출력한다
  2. 첫 줄은 앞쪽 공백 후 별 하나를 출력한다
  3. 중간 줄은 양 끝에만 별을, 사이는 공백으로 채운다

핵심 아이디어: 삼각형 테두리 패턴에서 마지막 줄만 밑변으로 꽉 채우는 변형이다.

코드

#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)