정수 N이 주어지면 높이가 N인 가운데 정렬 별 피라미드를 출력하는 프로그램을 작성한다. i번째 줄에는 앞에 공백이 N-i개, 별이 2*i-1개 출력되어야 한다.
입력
첫째 줄에 정수 N이 주어진다. (0 <= N <= 10)
출력
높이가 N인 가운데 정렬 별 피라미드를 출력한다.
다음 문제는 단순한 반복 출력에서 한 단계 나아가, 공백과 별의 개수를 동시에 제어하여 대칭 구조를 형성하는 출력 문제이다. 특히 “가운데 정렬”이라는 조건이 추가되면서, 각 행마다 두 종류의 문자열을 조합해야 한다는 점이 핵심이다.
N=int(input())
for i in range(1, N+1):
spaces=" "*(N-i)
stars="*"*(2*i-1)
print(spaces+stars)
1. 문제의 형식적 정의
각 행 ( i ) (1 ≤ ( i ) ≤ ( N ))에 대해 다음이 성립한다:
- 앞쪽 공백의 개수: ( N - i )
- 별의 개수: ( 2i - 1 )
따라서 각 행은 다음과 같은 구조를 갖는다:
[
\text{공백}(N-i) + \text{별}(2i-1)
]
이 규칙을 ( i = 1 )부터 ( N )까지 반복하면, 가운데 정렬된 피라미드 형태가 완성된다.
2. 프로그램 구성
N = int(input())
for i in range(1, N + 1):
spaces = " " * (N - i)
stars = "*" * (2 * i - 1)
print(spaces + stars)
3. 구성 요소별 문법 해설
3.1 입력 처리
N = int(input())
- input()은 문자열을 반환하며, int()를 통해 정수형으로 변환한다.
- 변수 N은 전체 출력의 높이를 결정하는 기준 값이다.
3.2 반복 제어 구조
for i in range(1, N + 1):
- range(1, N+1)은 1부터 ( N )까지의 정수 수열을 생성한다.
- 반복 변수 i는 현재 출력 중인 행 번호를 의미한다.
3.3 공백 생성
spaces = " " * (N - i)
- 문자열 " "(공백)을 ( N - i )번 반복하여 생성한다.
- 이는 출력의 좌측 여백을 형성하며, 결과적으로 별이 가운데에 위치하도록 만든다.
3.4 별 생성
stars = "*" * (2 * i - 1)
- 문자열 "*"을 ( 2i - 1 )번 반복하여 생성한다.
- 별의 개수가 홀수로 증가함으로써 좌우 대칭 구조가 형성된다.
3.5 출력
print(spaces + stars)
- 공백 문자열과 별 문자열을 연결(concatenation)하여 한 줄로 출력한다.
- print()는 자동으로 줄바꿈을 수행한다.
4. 실행 과정 예시
입력값이 ( N = 3 )일 경우:
i공백 (N-i)별 (2i-1)출력
| 1 | 2 | 1 | * |
| 2 | 1 | 3 | *** |
| 3 | 0 | 5 | ***** |
최종 출력:
*
***
*****
5. 핵심 개념 정리
이 문제는 다음 세 가지 요소의 결합으로 구성된다.
- 행 번호 기반 반복: for i in range(1, N+1)
- 좌측 정렬 보정을 위한 공백 생성: " " * (N - i)
- 대칭 구조를 위한 홀수 개 별 생성: "*" * (2*i - 1)
6. 결론
본 문제는 단순 반복 출력에서 확장된 형태로,
각 행마다 **서로 다른 두 종류의 문자열(공백, 별)**을 조합하여
시각적 대칭 구조를 형성하는 방식을 이해하는 데 목적이 있다.
특히 다음 관계식은 문제 해결의 핵심이다:
[
\text{공백} = N - i,\quad \text{별} = 2i - 1
]
이 관계를 정확히 구현하면, 가운데 정렬된 피라미드를 안정적으로 생성할 수 있다.
'Univ > Python Programming' 카테고리의 다른 글
| [문제 05] 별로 세모 그리기 - Python 풀이 (0) | 2026.04.09 |
|---|---|
| 파이썬의 변수와 기본 자료형 실습 (0) | 2026.04.08 |
| 파이썬의 변수와 기본 자료형 (0) | 2026.04.08 |
| [문제 02] 별로 역삼각형 그리기 - Python 풀이 (0) | 2026.04.08 |
| [문제 01] 별로 삼각형 그리기 - Python 풀이 (0) | 2026.04.08 |