function solution(triangle) {
// dp 배열을 triangle로 초기화
const dp = triangle.slice();
// 아래층부터 위층까지 거슬러 올라가며 최댓값을 계산
for (let i = dp.length - 2; i >= 0; i--) {
// 현재 층의 각 숫자에 대해 반복
for (let j = 0; j < dp[i].length; j++) {
// 현재 위치의 숫자에 현재 위치에서 아래층의 양 옆 숫자 중 큰 값을 더함
dp[i][j] += Math.max(dp[i + 1][j], dp[i + 1][j + 1]);
}
}
// 맨 꼭대기에 위치한 숫자까지의 최댓값 반환
return dp[0][0];
}