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)
'practivceAlgorithm > swexpertacademy' 카테고리의 다른 글
[SWEA][Python] 5102 노드의 거리 (0) | 2021.08.20 |
---|---|
[SWEA][Python] 5097 회전 (0) | 2021.08.20 |
[SWEA][Python] 1234 비밀번호 (0) | 2021.08.19 |
[SWEA][Python] 3143 가장 빠른 문자열 타이핑 (0) | 2021.08.17 |
[SWEA][Python] 1216 회문2 (0) | 2021.08.17 |