[SWEA] 2005_파스칼의 삼각형

김태민·2021년 8월 21일
2

알고리즘

목록 보기
4/77

Mingssssss

1. 문제

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

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

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

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

N이 4일 경우,

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

[제약 사항]

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

[입력]

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

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

[출력]

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

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

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

2. 코드

import sys
sys.stdin = open('input.txt')

def pascal_triangle(N):

    arr = [[0] * N for _ in range(N)]
    # 양 끝에는 값을 1, 가운데에 있는 값은 바로 위의 값과 바로 위의 값의 왼쪽 값을 더한다.
    for i in range(N):
        for j in range(i + 1):
            if j == 0 or j == i:
                arr[i][j] = 1
            else:
                arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1]

    for r in range(N):
        for c in range(N):
            if arr[r][c] != 0:
                print(arr[r][c], end=' ')
        print()



T = int(input())

for tc in range(T):
    N = int(input())  # 파스칼 삼각형 줄 수

    print('#{}'.format(tc+1))
    pascal_triangle(N)

3. 리뷰

D2 진입하고 처음 풀어보는 문제였는데 그당시엔 멘붕이였다.. 2차원 배열을 어떻게 다뤄야
할지 몰라서 규칙은 아는데 코드로 작성할 수는 없는 그 무력감,, 하지만 2차원 배열을 배우고
알고리즘에 대해 공부하고 다시 풀었을 때는 생각한대로 코드가 작성되어서 뿌듯했다. 이렇게
못 풀던 문제를 풀었을 때의 쾌감은 일반적인 문제를 풀 때의 쾌감과는 비교가 안 되게 큰 것 같다.

profile
어제보다 성장하는 개발자

0개의 댓글