2071번 : 파스칼 삼각형

8481 단어 정올정올

문제보기

파이썬 코드

import sys

n, m = map(int, sys.stdin.readline().split())  # n : 삼각형의 높이, m : 파스칼 삼각형 종류

arr = [[0] * (i + 1) for i in range(n)]

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 - 1] + arr[i - 1][j]

if m == 1:
    for i in range(n):
        for j in range(i+1):
            print(arr[i][j], end=' ')
        print()
if m == 2:
    for i in range(n):
        for k in range(i):
            print(" ",end='')
        for j in range(n-i):
            print(arr[n-i-1][j], end=' ')
        print()

if m == 3:
    for i in range(n):
        for j in range(i+1):
            print(arr[n-j-1][n-i-1], end=' ')
        print()

코드 설명

  • 일단 계단모양의 2차원 배열 생성 및 전부 0으로 초기화
  • 기본적인 형태의 파스칼 삼각형 값 넣어주기
  • m=1 일때는 그대로 출력
  • m=2 과 m=3일때는 출력할때의 i,j 인덱스 값을 조정해서 출력

포인트

처음에는 각각 m의 값에 대한 if문에서 배열을 만들고, 초기화하고 그에따라 출력을 시키려 하다보니 가독성이 떨어지고 생각하기가 더욱 복잡.
하지만 배열의 생성과 초기화를 맨 위로 빼주니까 가독성이 높아졌고 그래서 그런가 계속 고민하고있었던 출력 인덱스 조정에 대한 부분이 해결됨.
이래서 클린 코드의 중요성이 계속 대두되는가 싶음.

좋은 웹페이지 즐겨찾기