SWEA

[SWEA] 2005 : 파스칼의 삼각형 (Python/파이썬)

sson-coding 2025. 11. 19. 22:27

문제 링크

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

문제

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

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

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

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

n = 4 일 경우
     1
   1   1
 1   2    1
1  3    3    1     

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

[제약 사항]

파스칼의 삼각형의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)

입력

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

각 테스트 케이스에는 N이 주어진다.

출력

각 줄은 '#t'로 시작하고, 다음 줄부터 파스칼의 삼각형을 출력한다.

삼각형 각 줄의 처음 숫자가 나오기 전까지의 빈 칸은 생략하고 숫자들 사이에는 한 칸의 빈칸을 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

예제

입력

1
4

출력

#1
1
1 1
1 2 1
1 3 3 1
 

정답 및 풀이

t = int(input())

for tc in range(t):
    n = int(input())
    arr=[[0]*n for _ in range(n)]
    for i in range(0,n):
        for j in range(i+1):
            if 1 <= j < i:
                arr[i][j] = arr[i-1][j]+arr[i-1][j-1]
            else :
                arr[i][j] = 1
    print(f'#{tc+1}')
    for a in range(len(arr)):
        for b in range(len(arr)):
            if arr[a][b]==0:
                break
            else:
                print(arr[a][b],end=" ")
        print()

  1. t = int(input())
    • 테스트 케이스 개수를 입력받는다.
  2. n = int(input()) / arr = [[0]*n for _ in range(n)]
    • n 크기를 입력받고 n×n 배열을 0으로 초기화한다.
  3. for i in range(0, n): for j in range(i+1):
    • i행에서 0부터 i까지 j를 늘리며 파스칼 값을 채운다.
  4. if 1 <= j < i:
    • j가 행의 중간에 위치하면 내부 값이므로
    arr[i][j] = arr[i-1][j] + arr[i-1][j-1] 계산한다.
  5. else: arr[i][j] = 1
    • j가 0 또는 j==i이면 가장자리이므로 값을 1로 넣는다.
  6. print(f'#{tc+1}')
    • 테스트 케이스 번호를 출력한다.
  7. 출력 루프: for a in range(len(arr)): for b in range(len(arr)):
    • arr[a][b] == 0이면 그 행에서 출력 중단하고 0이 아니라면 arr[a][b]를 출력한다.