일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Javascript
- git
- 알고리즘
- Database
- 동적 계획법
- Data Structure
- CS
- DP
- 다이나믹 프로그래밍
- 그레이들
- LeetCode
- react
- 자바
- Python
- 프로그래머스
- 리트코드
- Graph
- Algorithm
- DFS
- vscode
- Redux
- 백준
- VIM
- db
- network
- frontend
- TypeScript
- BFS
- 안드로이드
- java
Archives
- Today
- Total
늘 겸손하게
LeetCode 746 - Min Cost Climbing Stairs ( C++ ) 본문
문제 풀이
DP (Dynamic Programming) 문제이므로 기록해둔 과거 계산 값을 이용해서 현재 값을 계산해야 한다.
i번째 계단까지 올라가는데 최소한의 cost를 기록하자.
i번째 계단을 올라갈때 계단을 한 칸 올라가거나, 두 칸 올라갈 수 있으므로, cost [i-1]와 cost [i-2] 중 작은 값을 cost [i]에 더해준다.
cost의 마지막 원소까지 계산하고, 뒤에서 첫번째 원소 값과 두 번째 원소 값 중 작은 값을 정답 값으로 반환한다.
+
dp를 기록할 새로운 배열을 만들 필요가 없으므로 주어진 cost 배열을 dp에 이용하여 메모리 사용량을 줄이자
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int len = cost.size();
for (int i = 2 ; i < len ; i++)
cost[i] += min(cost[i-1], cost[i-2]);
return min(cost[len-1], cost[len-2]);
}
};
|
cs |
결과
'코딩 문제 > LeetCode' 카테고리의 다른 글
LeetCode 111 - Minimum Depth of Binary Tree ( JavaScript ) (0) | 2021.11.01 |
---|---|
LeetCode 1277 - Count Square Submatrices with All Ones (0) | 2021.08.30 |
LeetCode 118 - Pascal's triangle ( C++ ) (0) | 2021.08.26 |
LeetCode Q - Broken Calculator ( Java ) (0) | 2021.02.22 |
LeetCode Q - Maximum 69 Number (Java) (0) | 2021.02.21 |