practivceAlgorithm/swexpertacademy
[SWEA][Python] 2005 파스칼의 삼각형
findTheValue
2021. 8. 19. 10:35
stack란에 있어서 억지로 stack처럼 LIFO구현.
조금 더 만지면 복사안하고 stack2개로 돌릴 수 있을 것같은데 그냥 구상만..
import sys
sys.stdin = open('input.txt')
test = int(input())
for test in range(1, test+1):
n = int(input())
pascals = [[] for _ in range(n)] #* *삼각형을 그릴 틀*
pascals[0].append(1) #* *첫열은 그냥 삽입*
for i in range(1, n): #* *2열부터 그릴 것임.*
stack = pascals[i-1][:] #* *1열(i-1열을 복사)*
pascals[i].append(1) #* *첫인자 삽입*
for j in range(1, i): #* *다음인자부터는 i-1열의 인자를 하나하나 pop 해주며 다음에 나올 인자와의 합을 i열에 삽입해줌.*
pascals[i].append(stack.pop()+stack[-1])
pascals[i].append(1) #* *마지막 인자 삽입.*
#* *어차피 좌우대칭이므로 기존 파스칼 삼각형의 규칙인* #* *i-1열의 0,1번째 인자의 합이 i열 1인자가 될 필요 없음
print(f'#{test}') #* *stack 을 이용 i-1열의 i,i-1번째 인자가 i열의 1번 인자가 되는 방식.*
for pas in pascals:
print(*pas)