일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- VIM
- Database
- network
- Graph
- Javascript
- 프로그래머스
- vscode
- CS
- 동적 계획법
- 리트코드
- db
- Redux
- Python
- react
- Algorithm
- git
- frontend
- 안드로이드
- TypeScript
- Data Structure
- 자바
- 백준
- LeetCode
- 알고리즘
- 그레이들
- DFS
- 다이나믹 프로그래밍
- DP
- java
- BFS
Archives
- Today
- Total
늘 겸손하게
LeetCode 118 - Pascal's triangle ( C++ ) 본문
처음으로 한방에 풀어버린 dp 문제네요
문제 풀이
numRows의 범위가 1 이상 30 이하이므로 파스칼의 삼각형을 미리 만들어버리고 numRows값에 따라 알맞은 vector<vector<int> 배열을 생성하여 반환합니다.
파스칼의 삼각형을 어떻게 만드느냐가 포인트죠.
1. 우선 31,31 2차원 배열 mat을 만듭니다.
2. 파스칼 삼각형의 맨 꼭대기와 바로 아래 줄은 다 1이므로 mat[0][0] , mat[1][0], mat [1][1]에 다 1을 저장합니다
3. 2차원 배열의 2행부터 30행까지 선형반복문을 통해서 알맞은 값을 저장해 나가면 됩니다.
파스칼 삼각형의 각 줄에서 맨 왼쪽값과 맨 오른쪽 값은 1이고 그 외의 값은 (이전행, 같은열)값 + (이전행, 같은열-1)값을 저장합니다.
파스칼 삼각형을 다 만들었으면 numRows값에 따라 알맞은 vector<vector<int> 타입의 2차원 배열을 만들어 반환합니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans;
int mat[31][31] = {0,};
mat[0][0] = 1;
mat[1][0] = 1;
mat[1][1] = 1;
for (int i = 2 ; i <= 30 ; i++ ) {
for (int j = 0 ; j <= i ; j++) {
if ( j == 0 ) { // 파스칼 삼각형 각 행의 맨 오른쪽 값
mat[i][j] = 1;
}
else if ( j == i ) { // 파스칼 삼각형 각 행의 맨 왼쪽 값
mat[i][j] = 1;
}
else // 그 외
mat[i][j] = mat[i-1][j] + mat[i-1][j-1];
}
}
for (int i = 0 ; i < numRows ; i++) { // 알맞은 vector<vector<int>> 2차원 배열 생성
vector<int> v(i+1);
for (int j = 0; j <= i ; j++)
v[j] = mat[i][j];
ans.push_back(v);
}
return ans;
}
};
|
cs |
결과
'코딩 문제 > LeetCode' 카테고리의 다른 글
LeetCode 1277 - Count Square Submatrices with All Ones (0) | 2021.08.30 |
---|---|
LeetCode 746 - Min Cost Climbing Stairs ( C++ ) (0) | 2021.08.28 |
LeetCode Q - Broken Calculator ( Java ) (0) | 2021.02.22 |
LeetCode Q - Maximum 69 Number (Java) (0) | 2021.02.21 |
LeetCode Q - Container With Most Water (Java) (0) | 2021.02.19 |