문제: 파스칼의 삼각형
설명:
파스칼의 삼각형은 다음과 같은 성질을 갖는 삼각형 모양의 배열입니다:
- 삼각형의 각 행은 왼쪽에서 오른쪽으로 번호를 매긴다(0번째 행, 1번째 행, ...).
- 각 행의 처음과 마지막 요소는 1이다.
- 내부의 각 요소는 바로 위 행의 왼쪽 요소와 오른쪽 요소의 합으로 이루어져 있다.
다음은 파스칼의 삼각형의 처음 6개 행의 예시입니다
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1],
[1,5,10,10,5,1]
]
이 삼각형의 행 수를 나타내는 정수 numRows가 주어졌을 때, numRows 행을 포함하는 파스칼의 삼각형을 생성하시오.
답안
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
tri = []
for i in range(numRows):
row = [0] *(i+1)
row[0],row[-1] = 1,1
for j in range(1,len(row)-1):
row[j]=tri[i-1][j-1] + tri[i-1][j]
tri.append(row)
return tri
파스칼의 삼각형이란?
- 삼각형의 첫 번째 행은 [1]
- 각 행의 첫 번째와 마지막 숫자는 항상 1
- 나머지 숫자들은 바로 위 행의 왼쪽과 오른쪽 숫자의 합으로 결정
이 원리를 그대로 코드로 구현해보자
1. 삼각형을 담을 리스트를 초기화 ( tri = [] )
2. 첫번째 행 생성
for i in range(numRows):
row = [0] * (i + 1)
이는 삼각형의 행을 생성하기 위한 반복문이다. i는 현재 몇 번째 행을 만들고 있는지 나타내고, 'range(numRows)' 는 0 ~ numRows-1 까지 이를 반복시킨다.
3. 첫번째, 마지막요소 1로 설정
row[0], row[-1] = 1, 1
첫번째와 마지막 요소는 1이 되어야 한다.
4. 다른 요소들 계산
for j in range(1, len(row) - 1):
row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
triangle.append(row)
다른 요소들은 윗행에 담긴 수의 합으로 결정되므로, 위와 같은 식을 통해 합쳐서 요소에 들어갈 값을 계산하고,
.append 를 통해 row 에 추가해준다.
'Algorithm > 릿코드' 카테고리의 다른 글
99클럽 코테 스터디 11일차 1025. Divisor Game (0) | 2024.06.10 |
---|---|
99클럽 코테 스터디 10일차 509. Fibonacci Number (0) | 2024.06.09 |
99클럽 코테 스터디 8일차 338. counting bits (0) | 2024.06.07 |
99클럽 코테 스터디 7일차 1221. Split a String in Balanced Strings (0) | 2024.06.05 |
99클럽 코테 스터디 5일차 104. Maximum Depth of Binary Tree (1) | 2024.06.03 |