Algorithm/SW Expert Academy

[Python] 2005. 파스칼의 삼각형

느낌표 공장장 2021. 9. 14. 17:38

 

tc = int(input())

for idx in range(1, tc+1):

    n = int(input())    # 파스칼 삼각형의 크기
    temp = [1]          # 첫번째 줄

    # 2차원 리스트로 만들지 않고 바로바로 프린트 해주기 위해
    # 테스트케이스의 번호와 첫번째 줄을 먼저 프린트해준다.
    print('#{}'.format(idx))
    print(*temp)

    # 두번째 줄부터 시작하기 때문에 삼각형 크기-1(n-1)까지 반복
    for i in range(n-1):
        stack = [0] + temp + [0]    # 맨 처음과 끝에 있는 1은 더할게 없으니 현재의 위 라인의 양 끝에 0을 붙여준다.
        temp = []                   # 해당 라인의 숫자를 저장할 임시 리스트

        # 여기서 pop()은 맨 마지막 원소를 뽑는다.
        # 파스칼 삼각형은 뒤집어도 똑같으니 반대로 해도 상관 X 
        num_pop = stack.pop()       # 자신의 오른쪽 위 숫자 가져오기 (0)

        while stack:
            num_pop2 = stack.pop()              # 자신의 왼쪽 위 숫자 가져오기
            temp.append(num_pop + num_pop2)     # 자신의 왼쪽 위 숫자 오른쪽 위 숫자와를 더하여 temp에 저장한다.

            num_pop = num_pop2      # 자신의 오른쪽 숫자는 다음 자신의 왼쪽 숫자이므로 바꿔준다.

        # 해당 라인을 프린트 해준다.
        print(*temp)

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 4866. 괄호 검사  (0) 2021.09.14
[Python] 1219. 길찾기  (0) 2021.09.14
[Python] 4865. 글자수  (0) 2021.09.07
[Python] 4864. 문자열비교  (0) 2021.09.07
[Python] 1216. 회문2  (0) 2021.09.07