본문 바로가기

BAEKJOON/구현

백준 2439번 [별 찍기-2](C++)-yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 2439 [별 찍기 - 2]


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

문제 설명:

자연수 N이 주어질 때, N번째 줄까지 오른쪽 정렬된 별(*)을 출력하는 프로그램을 작성하세요.

입력 조건:

  • 첫째 줄에 자연수 N이 주어집니다. (1 ≤ N ≤ 100)

출력 조건:

  • 첫째 줄부터 N번째 줄까지 다음과 같은 형태로 출력합니다:
    *
   **
  ***
 ****
*****

문제 해결 코드


#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n; // N 입력

    for (int i = 0; i < n; i++) {
        // 공백 출력
        for (int j = 0; j < n - i - 1; j++) {
            cout << " ";
        }
        // 별 출력
        for (int j = 0; j < i + 1; j++) {
            cout << "*";
        }
        // 줄바꿈
        cout << endl;
    }

    return 0; // 프로그램 정상 종료
}

코드 설명

위 코드는 입력받은 N에 따라 오른쪽 정렬된 별을 출력합니다.

  • 공백 출력:
    • 각 줄의 공백 개수는 `n - i - 1`입니다.
  • 별 출력:
    • 각 줄의 별 개수는 `i + 1`입니다.
  • 출력:
    • 각 줄마다 공백과 별을 출력한 후 줄바꿈(`endl`)을 합니다.

시간 복잡도 분석:

  • 입력: N을 입력받는 데 O(1).
  • 출력: 총 N줄을 출력하며 각 줄에 최대 N개의 연산을 수행하므로 O(N²).

따라서 전체 시간 복잡도는 O(N²)입니다.


결과

다음은 입력 예시와 출력 결과입니다:

입력:
5

출력:
    *
   **
  ***
 ****
*****

위와 같이 입력된 숫자에 따라 오른쪽 정렬된 별이 출력됩니다.

다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!

728x90
LIST