본문 바로가기
TIL - 프로그래밍/Python 알고리즘

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

by chaemj97 2022. 2. 22.
728x90

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5P0-h6Ak4DFAUq 

 

SW Expert Academy

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

swexpertacademy.com

 

< 📝 문제 >

크기가 N인 파스칼의 삼각형을 만들어야 한다.

파스칼의 삼각형이란 아래와 같은 규칙을 따른다.

1. 첫 번째 줄은 항상 숫자 1이다.

2. 두 번째 줄부터 각 숫자들은 자신의 왼쪽과 오른쪽 위의 숫자의 합으로 구성된다.

N이 4일 경우,


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


< ❓ 생각 >


< 💻 코드 >

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    # 테스트 케이스
    N = int(input())

    # N*N
    arr = [[0]*N for _ in range(N)]
    # if j == 0 -> arr[i][j] = 1
    # if i == j -> arr[i][j] = 1
    # arr[i][j] = arr[i-1][j-1] + arr[i-1][j]
    
    for i in range(N):
    	# 열의 크기는 행의 인덱스+1
        for j in range(i+1):
            if i == j or j == 0:
                arr[i][j] = 1
            else:
                arr[i][j] = arr[i-1][j-1] + arr[i-1][j]
                
    print(f'#{tc}')
    # 0은 출력 안함
    for row in arr:
        result = []
        for x in row:
            if x:
                result += [x]
        print(*result)

< ❗ >

N*N 빈 2차원 배열 만들기

arr = [[0]*N for _ in range(N)]

리스트를 띄어쓰기로 나열 *(언팩트)

print(*result)
# 결과
1
1 1
1 2 1

print(result)
# 결과
[1]
[1, 1]
[1, 2, 1]

 

728x90
반응형

댓글