728x90

 

문제 설명

  1. 주어진 정수 N에 따라 아래와 같은 형태의 별(*)을 출력해야 합니다:
    • N=5 일 때:
          *
         ***
        *****
       *******
      *********
       *******
        *****
         ***
          *
       
  2. 이 문제는 중앙을 기준으로 대칭적인 피라미드 모양을 출력하는 문제입니다.

문제 해결 전략

  1. 첫 번째 피라미드 (위쪽 절반):
    • i-번째 줄에 출력되는 별의 개수는 2i−1
    • 공백의 개수는 N−i
  2. 두 번째 피라미드 (아래쪽 절반):
    • i-번째 줄(위 절반 이후)의 별의 개수는 2(N−i)−1
    • 공백의 개수는 i−N
  3. 이를 반복문으로 처리하여 출력합니다.

코드 구현

N = int(input())  # 입력값

# 위쪽 피라미드
for i in range(1, N + 1):
    print(" " * (N - i) + "*" * (2 * i - 1))

# 아래쪽 피라미드
for i in range(N - 1, 0, -1):
    print(" " * (N - i) + "*" * (2 * i - 1))

 


코드 설명

위쪽 피라미드:

  • i-번째 줄에서:
    • " " * (N - i) → 왼쪽 공백 출력.
    • "*" * (2 * i - 1) → 별 출력.
  • 예를 들어 N=5일 때:
    *
   ***
  *****
 *******
*********

 

아래쪽 피라미드:

  • i-번째 줄에서:
    • " " * (N - i) → 왼쪽 공백 출력.
    • "*" * (2 * i - 1) → 별 출력.
  • i N−1부터 1까지 감소시키면서 처리.
  • 예를 들어 N=5일 때:
 *******
  *****
   ***
    *

 

출력:

  • 두 반복문을 순차적으로 실행하여 최종 출력물을 완성합니다.

시간 복잡도

  • 각 반복문은 O(N)으로 실행됩니다.
  • 전체 시간 복잡도는 O(N)+O(N)=O(N)

자주 하는 실수

  1. 공백과 별의 관계를 잘못 설정:
    • 공백의 개수는 N−i이고, 별의 개수는 2i−1임을 놓치면 출력 형식이 잘못됩니다.
  2. 아래쪽 피라미드의 시작을 으로 설정:
    • 아래쪽 피라미드는 부터 시작해야 정상적으로 대칭 구조를 유지합니다.

 

728x90
반응형

+ Recent posts

728x90
반응형
728x90
반응형