한개 이상의 연속된 수들의 곱의 최대값
dp[i]를 i를 마지막 인덱스로 하는 연속곱의 최대값이라 정의하자
주의할 점은 i번째 인덱스 값을 무시하고 넘어갈 수 없다.
즉, d[i-1], d[i-1] * arr[i], arr[i] 를 비교하는게 아니라
d[i-1] * arr[i], arr[i] 를 비교하는거다!!!!!!!!
이거 때문에 실버 4문제가지고 1시간 넘게 맞왜틀 해버렸다…
문제를 잘 파악하자ㅠㅠ
저거를 토대로 점화식을 세우면
d[i] = Math.max(d[i-1] * arr[i], d[i]) 가 된다.
const input = require("fs").readFileSync("dev/stdin").toString().trim().split("\n");
const n = input[0] * 1;
const d = input.slice(1).map(Number);
for (let i = 1; i < n; i++) {
d[i] = Math.max(d[i], d[i - 1] * d[i]);
}
console.log(Math.max(...d).toFixed(3));