사용자가 직접 입력한 행 수만큼 파스칼의 삼각형(Pascal's Triangle)을 출력해야 할 때, 간단한 'for' 루프와 팩토리얼(factorial) 계산을 활용하면 손쉽게 구현할 수 있습니다.
파스칼의 삼각형은 각 행의 값이 조합(combination) 공식으로 계산되는 구조입니다. 즉, i번째 행의 j번째 값은 다음과 같이 표현됩니다.
C(i, j) = i! / (j! × (i−j)!)
아래는 이 원리를 적용한 전체 예제 코드입니다.
예제
from math import factorial
input = int(input("Enter the number of rows..."))
for i in range(input):
for j in range(input-i+1):
print(end=" ")
for j in range(i+1):
print(factorial(i)//(factorial(j)*factorial(i-j)), end=" ")
print()실행 결과
Enter the number of rows...6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1코드 설명
필요한 패키지 임포트: math 모듈에서 factorial(팩토리얼) 함수를 가져옵니다.
행 수 입력 받기: input() 함수를 통해 사용자로부터 출력할 행의 개수를 입력받습니다.
중첩 루프 반복: 바깥쪽 루프는 각 행을 담당하고, 안쪽 첫 번째 루프는 삼각형 모양을 만들기 위한 공백을 출력하며, 두 번째 루프는 해당 행의 값을 계산해 출력합니다.
팩토리얼 기반 값 계산: 조합 공식 C(i, j) = i! / (j! × (i−j)!)을 정수 나눗셈 연산자(//)로 계산하여 파스칼의 삼각형 값을 콘솔에 출력합니다.
이처럼 math.factorial 함수와 이중 for 루프만 있으면, 별도의 리스트나 재귀 함수 없이도 파스칼의 삼각형을 깔끔하게 출력할 수 있습니다. 행 수가 커질 경우에도 동일한 로직이 그대로 적용되므로 확장성이 좋다는 장점이 있습니다.