[Algorithm🧬] 백준 2670 : 연속부분최대곱

또상·2022년 11월 15일
0

Algorithm

목록 보기
91/133
post-thumbnail

문제

import sys
# from functools import reduce

readl = sys.stdin.readline

n = int(readl())
arr = [float(readl()) for _ in range(n)]

# 연속된 곱의 최대.
sol = 0

# 곱 = 1
# for i in range(2, n + 1):
#     for j in range(0, n - i):
#         곱 = reduce(lambda acc, cur: acc * cur, arr[j:j + i])
#         # print(곱)
#         if 곱 > sol:
#             sol = 곱

dp = [0] * n
for i in range(n):
    if i == 0:
        dp[i] = arr[i]
    else:
        dp[i] = max(dp[i - 1] * arr[i], arr[i]) # i 까지 했을 때 최댓값이 dp 에 담기고, 그 최댓값이랑 현재값 을 곱한것과 현재값 중 최댓값이 결정됨.

    if sol < dp[i]:
        sol = dp[i]



print(f"{sol:.3f}")
profile
0년차 iOS 개발자입니다.

0개의 댓글