PascalTriangleII
Published at 2021-08-03
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
rows = [1] * (rowIndex + 1) # 한 줄 생성
for i in range(2, rowIndex + 1):
for j in range(i - 1, 0, -1):
rows[j] += rows[j - 1]
return rows
# 아니 이것도 풀었었잖아 ㅡㅡ 리트코드 제대로 안하냐
# 해당하는 한 줄만 출력하면 됨
# 그니까 일단 1을 rowIndex만큼 생성.
# Pascal's Triangle 에서 했던거처럼 차례로 갱신할거임
# row = 5이면 원래는 [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 이렇게 됨
# 그치만 [1,1,1,1,1]에서 시작하니까 먼저 [1,1]은 1밖에 없으므로 돌릴 필요 없음
# 인덱스1까지만 갱신 [1,2,1,1,1] -> 원래의 [2]행인 [1,2,1]임
# 그 다음은 인덱스 2까지만 갱신 [1,3,3,1,1].. 다음은 3번까지만 갱신: [1,4,6,3,1] 하면 끝
# 근데 여기서 갱신을 할때 앞에꺼랑 자기 자신 더하는데 앞에서 이미 갱신되었으면 값이 달라짐
# 그래서 뒤부터 돌려서 앞에꺼랑 더한다