본문 바로가기

Study/Algorithm 문제풀이

[SW Expert Academy] 2005. 파스칼의 삼각형(using python)

728x90
반응형

* 문제의 저작권은 SW Expert에 있습니다.

swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AXbMsN1qMnMDFAVy&contestProbId=AV5P0-h6Ak4DFAUq&probBoxId=AXbMuwJqM44DFAVy&type=PROBLEM&problemBoxTitle=%EB%82%9C%EC%9D%B4%EB%8F%842&problemBoxCnt=11

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

[ 문 제 ]

크기가 N인 파스칼의 삼각형을 만들어야 한다.
파스칼의 삼각형이란 아래와 같은 규칙을 따른다.
1. 첫 번째 줄은 항상 숫자 1이다.
2. 두 번째 줄부터 각 숫자들은 자신의 왼쪽과 오른쪽 위의 숫자의 합으로 구성된다.
N이 4일 경우,

N이 4일 경우 출력 결과

N을 입력 받아 크기 N인 파스칼의 삼각형을 출력하는 프로그램을 작성하시오.

[제약 사항]
파스칼의 삼각형의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)

[ 입 력 ]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어진다.

[ 출 력 ]
각 줄은 '#t'로 시작하고, 다음 줄부터 파스칼의 삼각형을 출력한다.
삼각형 각 줄의 처음 숫자가 나오기 전까지의 빈 칸은 생략하고 숫자들 사이에는 한 칸의 빈칸을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

입력과 출력 예시

[ 전체 코드 ]

def factorial(num):
    result = 1
    if num == 0:
        return 1
    else:
        while num != 1:
            result = result*num
            num -= 1
    return result

T = int(input())

for i in range(1, T+1):
    n = int(input())
    print("#{}".format(i))
    for j in range(1, n+1):
        res = []
        for k in range(j):
            res.append(str(int(factorial(j-1)/(factorial(k)*factorial(j-1-k)))))
        print(" ".join(res))

 

########################################################################################

이 문제는 중학교 시절에 조합을 이용하여 풀었던 기억을 더듬어 팩토리얼 함수를 만들었다..

팩토리얼에서 0! 는 1이기 때문에 별도 조건을 추가하였음..

 

참고로 python 라이브러리 math를 import 하면 factorial 함수를 사용할 수 있다.

 

728x90
반응형