

오른쪽으로 정렬된 직각삼각형을 출력하는 코드이다.
더보기
가장 기본적인 방법으로, 공백을 먼저 출력하고 이어서 별을 출력하는 방식이다. 바깥쪽 for 반복문은 행(line)을, 안쪽 for 반복문은 공백과 별의 개수를 제어한다. 이 이중 for 반복문 사용하기
# 중첩 반복문 (For-For) 사용
a = 8
for i in range(a):
for j in range(a - (i + 1)):
print(" ", end="")
for k in range(i + 1):
print("*", end="")
print()
코드 분석
1. 바깥쪽 for 반복문
a = 8
for i in range(a):
- a = 8: 삼각형의 높이를 8로 설정하는 변수입니다.
- for i in range(a): 이 반복문은 i를 0부터 7까지, 총 8번 반복합니다. 이는 삼각형의 **행(row)**을 제어합니다. i의 값은 현재 몇 번째 행인지를 나타내며, 0부터 시작합니다.
2. 첫 번째 안쪽 for 반복문 (공백 출력)
Python
for j in range(a - (i + 1)):
print(" ", end="")
- 이 반복문은 각 행의 공백을 출력합니다.
- a - (i + 1): 이 계산식은 현재 행에 필요한 공백의 개수를 결정합니다.
- i=0 (첫 번째 행): 8 - (0 + 1) = 7개의 공백이 출력됩니다.
- i=1 (두 번째 행): 8 - (1 + 1) = 6개의 공백이 출력됩니다.
- i=7 (마지막 행): 8 - (7 + 1) = 0개의 공백이 출력됩니다.
- print(" ", end=""): 공백을 출력하지만, end="" 옵션 덕분에 줄바꿈을 하지 않고 다음 내용이 바로 이어지도록 합니다.
3. 두 번째 안쪽 for 반복문 (별 출력)
Python
for k in range(i + 1):
print("*", end="")
print()
- 이 반복문은 각 행의 **별(*)**을 출력합니다.
- i + 1: 이 계산식은 현재 행에 필요한 별의 개수를 결정합니다.
- i=0 (첫 번째 행): 0 + 1 = 1개의 별이 출력됩니다.
- i=1 (두 번째 행): 1 + 1 = 2개의 별이 출력됩니다.
- i=7 (마지막 행): 7 + 1 = 8개의 별이 출력됩니다.
- print("*", end=""): 별을 출력하지만, 역시 줄바꿈을 하지 않습니다.
- 마지막의 print(): 두 개의 안쪽 반복문이 모두 끝난 후, 다음 행을 위해 줄을 바꿉니다.
최종 결과
이 코드는 공백의 개수를 점차 줄이고 별의 개수를 점차 늘려가면서, 별들이 오른쪽으로 정렬된 직각삼각형 모양을 만들어냅니다.
더보기
가장 파이썬답고 간결한 방법이다. 문자열 곱셈 연산자를 사용하여 공백과 별을 한 번에 출력할 수 있다.
# 문자열 곱셈 연산자 사용
n = 8
for i in range(n):
print(" " * (n - (i + 1)) + "*" * (i + 1))
코드 분석
1. 변수 설정과 바깥쪽 반복문
n = 8
for i in range(n):
- n = 8은 삼각형의 높이를 8로 설정하는 변수이다.
- for i in range(n)은 i를 0부터 7까지, 총 8번 반복하는 루프이다. 이 반복문은 삼각형의 **행(row)**을 제어하며, i는 현재 몇 번째 행인지를 나타낸다 (0부터 시작).
2. 출력문
print(" " * (n - (i + 1)) + "*" * (i + 1))
- 이 한 줄의 코드가 각 행의 모양을 결정한다. 파이썬의 **문자열 곱셈 연산자(*)**와 **덧셈 연산자(+)**를 효과적으로 사용한다.
- " " * (n - (i + 1)): 이 부분은 각 행에 필요한 공백의 개수를 계산하고, 그만큼의 공백 문자열을 만든다.
- i=0 (첫 번째 행): 8 - (0 + 1) = 7개의 공백이 만들어진다.
- i=1 (두 번째 행): 8 - (1 + 1) = 6개의 공백이 만들어진다.
- i=7 (마지막 행): 8 - (7 + 1) = 0개의 공백이 만들어진다.
- + "*" * (i + 1): 이 부분은 각 행에 필요한 별(*)의 개수를 계산하고, 그만큼의 별 문자열을 만든다.
- i=0 (첫 번째 행): 0 + 1 = 1개의 별이 만들어진다.
- i=1 (두 번째 행): 1 + 1 = 2개의 별이 만들어진다.
- i=7 (마지막 행): 7 + 1 = 8개의 별이 만들어진다.
- + 연산자는 두 문자열(공백 문자열과 별 문자열)을 합쳐서 한 줄의 완전한 문자열을 만든다. print() 함수는 이 문자열을 출력하고 자동으로 줄바꿈을 한다.
최종 결과
이 코드는 루프가 한 번 실행될 때마다 공백의 개수를 하나씩 줄이고, 별의 개수를 하나씩 늘려가면서 결과적으로 별이 오른쪽으로 정렬된 직각삼각형 모양을 만들어낸다.
더보기
while 반복문을 사용하여 동일한 결과를 얻을 수 있다.
# while 반복문 사용
n = 8
i = 0
while i < n:
print(" " * (n - (i + 1)) + "*" * (i + 1))
i += 1
코드 분석
1. 변수 초기화 및 while 반복문 설정
n = 8
i = 0
while i < n:
- n = 8: 삼각형의 높이를 8로 정의한다. 이 값은 패턴의 크기를 결정한다.
- i = 0: 반복문 카운터 변수 i를 0으로 초기화한다. 이 변수는 현재 몇 번째 행인지를 나타낸다.
- while i < n: i가 n(8)보다 작은 동안, 즉 i가 0부터 7일 때까지 반복문을 실행한다.
2. 출력문 및 변수 업데이트
print(" " * (n - (i + 1)) + "*" * (i + 1))
i += 1
- print(...): 이 줄이 각 행의 실제 출력을 담당한다. 문자열 곱셈(*)과 덧셈(+) 연산자를 활용하여 공백과 별을 한 번에 만든다.
- " " * (n - (i + 1)): 현재 행에 필요한 공백의 개수를 계산합니다. i가 0일 때는 7개의 공백, 1일 때는 6개의 공백...과 같이 점차 줄어든다.
- "+" * (i + 1): 현재 행에 필요한 별의 개수를 계산한다. i가 0일 때는 1개의 별, 1일 때는 2개의 별...과 같이 점차 늘어난다.
- 두 문자열은 +로 합쳐져 한 줄로 출력된다.
- i += 1: 반복문이 한 번 실행될 때마다 i의 값을 1씩 증가시켜 다음 행으로 이동한다.
이 코드는 반복 횟수를 직접 계산하여 제어한다는 점에서 for 반복문과 비슷하지만, 변수 업데이트를 명시적으로 작성해야 한다.
최종 결과
이 코드는 공백의 개수를 줄이고 별의 개수를 늘려가면서, 별들이 오른쪽으로 정렬된 직각삼각형을 완성한다.

'파이썬(문제풀이)' 카테고리의 다른 글
| 파이썬 정삼각형 별찍기 (0) | 2025.09.08 |
|---|---|
| 파이썬 - 별찍기 역직각삼각형 (0) | 2025.09.07 |
| 별찍기-직각삼각형 (0) | 2025.09.07 |
| 파이썬 문제풀이-2 (0) | 2025.09.06 |
| 파이썬 문제풀이-1 (0) | 2025.09.05 |