Study/Algorithm
LeetCode (C/C++) 120. Triangle
hwooo
2024. 4. 29. 13:22
https://leetcode.com/problems/triangle/submissions/
풀이
주어진 배열을 한 줄씩 순회하며, 윗 행에서 나올 수 있는 가장 작은 값을 현재 행에 더한다.
코드
class Solution {
public:
int minimumTotal(vector<vector<int>>& cal) {
int height = cal.size();
// 윗 줄의 원소 중 가장 작은 원소의 값을 현재 행에 더 함
for (int i = 1; i < height; i++) {
cal[i][0] += cal[i - 1][0];
for (int j = 1; j < i; j++)
cal[i][j] += min(cal[i - 1][j - 1], cal[i - 1][j]);
cal[i][i] += cal[i - 1][i - 1];
}
// 마지막 행을 순회하면서 가장 작은 값 구함
int ans = 2'000'000;
for (int i = 0; i < height; i++)
ans = min(ans, cal[height - 1][i]);
return ans;
}
};