728x90
문제 설명
- 주어진 정수 N에 따라 아래와 같은 형태의 별(*)을 출력해야 합니다:
- N=5 일 때:
* *** ***** ******* ********* ******* ***** *** *
- N=5 일 때:
- 이 문제는 중앙을 기준으로 대칭적인 피라미드 모양을 출력하는 문제입니다.
문제 해결 전략
- 첫 번째 피라미드 (위쪽 절반):
- i-번째 줄에 출력되는 별의 개수는 2i−1
- 공백의 개수는 N−i
- 두 번째 피라미드 (아래쪽 절반):
- i-번째 줄(위 절반 이후)의 별의 개수는 2(N−i)−1
- 공백의 개수는 i−N
- 이를 반복문으로 처리하여 출력합니다.
코드 구현
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)
자주 하는 실수
- 공백과 별의 관계를 잘못 설정:
- 공백의 개수는 N−i이고, 별의 개수는 2i−1임을 놓치면 출력 형식이 잘못됩니다.
- 아래쪽 피라미드의 시작을 으로 설정:
- 아래쪽 피라미드는 부터 시작해야 정상적으로 대칭 구조를 유지합니다.
728x90
반응형