본문 바로가기

파이썬(문제풀이)

파이썬 별찍기 - 오른쪽으로 정렬된 직각삼각형

오른쪽으로 정렬된 직각삼각형을 출력하는 코드이다.

더보기

가장 기본적인 방법으로, 공백을 먼저 출력하고 이어서 별을 출력하는 방식이다. 바깥쪽 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