본문 바로가기

파이썬(문제풀이)

파이썬 - 별찍기 역직각삼각형

 

"역직각삼각형" 패턴은 별이 왼쪽으로 정렬된, 밑변이 가장 긴 변인 직각삼각형을 뒤집은 형태이다.

더보기

가장 직관적인 방법은 두 개의 for 반복문을 사용하는 것이다. 바깥쪽 반복문은 행(line), 안쪽 반복문은 각 행에 출력할 별의 개수를 제어한다.

# 중첩 반복문 (For-For) 사용

num_rows = 8
for i in range(num_rows, 0, -1):
    for j in range(i):
        print("*", end="")
    print()

코드 분석


1. 바깥쪽 for 반복문

num_rows = 8
for i in range(num_rows, 0, -1):
  • num_rows = 8: 삼각형의 높이를 8로 설정한다. 이 변수는 삼각형의 크기를 결정한다.
  • for i in range(num_rows, 0, -1): 이 반복문은 i를 8부터 1까지 1씩 감소시키면서 총 8번 반복한다. 이는 삼각형의 **행(row)**을 제어하며, 첫 행에 가장 많은 별을, 마지막 행에 가장 적은 별을 출력하게 만든다.

2. 안쪽 for 반복문

for j in range(i): 
	print("*", end="")
print()
  • for j in range(i): 이 반복문은 각 행에 필요한 별의 개수를 제어한다. i의 값에 따라 반복 횟수가 달라진다.
    • i=8 (첫 번째 행): range(8)에 따라 8개의 별이 출력된다.
    • i=7 (두 번째 행): range(7)에 따라 7개의 별이 출력된다.
    • ...
    • i=1 (마지막 행): range(1)에 따라 1개의 별이 출력된다.
  • print("*", end=""): 별을 출력하지만, end="" 옵션 덕분에 줄바꿈 없이 다음 별이 바로 이어져서 한 줄에 여러 개의 별을 나란히 출력한다.
  • 안쪽 반복문이 종료된 후, print() 함수가 실행되어 줄바꿈을 한다. 이는 다음 행의 별이 새로운 줄에 출력되도록 한다.

최종 결과

이 코드는 별의 개수를 첫 행부터 마지막 행까지 점차 줄여가며, 왼쪽으로 정렬된 역직각삼각형 모양을 만들었다.

 

더보기

파이썬의 문자열 곱셈 연산자(*)는 특정 문자열을 지정된 횟수만큼 반복하는 편리한 기능을 제공한다. 이 방법을 사용하면 코드를 훨씬 간결하게 만들 수 있다.

# 문자열 곱셈 연산자 사용

num_rows = 8
for i in range(num_rows, 0, -1):
    print("*" * i)

코드 분석


1. 변수 설정과 반복문

  • num_rows = 8: 삼각형의 높이를 8로 정의하는 변수이다. 이 값은 패턴의 크기를 결정한다.
  • for i in range(num_rows, 0, -1): 이 for 반복문은 i를 8부터 1까지, 1씩 감소시키며 총 8번 반복합니다.
    • start 값은 num_rows(8)이다.
    • stop 값은 0입니다. range 함수는 stop 값 바로 전까지 반복하므로, i는 1까지 실행된다.
    • step 값은 -1로, 숫자가 감소하면서 반복된다. 이 반복문의 결과로, i는 순서대로 8, 7, 6, 5, 4, 3, 2, 1의 값을 갖게 된다.

2. 출력문

  • print("*" * i): 이 한 줄이 각 행의 출력을 담당한다.
    • 파이썬의 문자열 곱셈 연산자(*)는 문자열을 지정된 횟수만큼 반복한다.
    • i의 값에 따라 *가 반복되는 횟수가 달라진다.
    • i가 8일 때: *를 8번 반복해 ********를 출력한다.
    • i가 7일 때: *를 7번 반복해 *******를 출력한다.
    • ...
    • i가 1일 때: *를 1번 반복해 *를 출력한다.
  • print 함수는 각 출력이 끝난 후 자동으로 줄을 바꿔주므로, 별들이 한 줄씩 아래로 출력된다.

최종 결과

이 코드는 별의 개수를 첫 행부터 마지막 행까지 점차 줄여가며, 왼쪽으로 정렬된 역직각삼각형 모양을 만든다.

 

더보기

while 반복문을 사용하여 동일한 결과를 얻을 수 있다.

# while 반복문 사용

rows = 8
while rows > 0:
    print("*" * rows)
    rows -= 1

코드 분석


1. 변수 초기화와 while 반복문 설정

  • rows = 8: 삼각형의 첫 번째 줄에 출력할 별의 개수를 8로 정의한다. 이 변수는 반복문의 카운터 역할도 한다.
  • while rows > 0: while 반복문의 조건식이다. rows 변수의 값이 0보다 큰 동안 반복문 내부의 코드를 계속 실행한다. rows가 1일 때까지 반복하며, rows가 0이 되는 순간 반복문이 종료된다.

2. 출력문과 변수 업데이트

  • print("*" * rows): 이 줄이 각 행의 출력을 담당한다. 파이썬의 문자열 곱셈 연산자(*)를 사용해 rows 값만큼 별(*)을 반복하여 출력한다.
    • rows가 8일 때: ********가 출력된다.
    • rows가 7일 때: *******가 출력된다.
    • ...
    • rows가 1일 때: *가 출력된다.
  • rows -= 1: 반복문이 한 번 실행될 때마다 rows의 값을 1씩 감소시킨다. 이 덕분에 다음 줄에 출력되는 별의 개수가 하나씩 줄어들게 된다.

최종 결과

이 코드는 while 루프를 사용하여 rows 변수를 8에서 1까지 점차 줄여가면서 별을 출력하고, 결과적으로 왼쪽으로 정렬된 역직각삼각형을 완성한다.