본문 바로가기
Algorithm/Dynamic Programming

[파이썬] 백준 2670 : 연속부분최대곱 (실버4)

by 베짱이28호 2023. 7. 30.

[파이썬] 백준 2670 : 연속부분최대곱 (실버4)

 

 

2670번: 연속부분최대곱

첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나

www.acmicpc.net


문제


풀이

방향성 생각

1차원 DP를 만든다. 초기값은 arr의 첫 번째 값.

두 번째 값부터는 arr[i+1]과 dp[i]*arr[i+1] 값을 비교해준다. 큰 것을 DP에 할당

 

전체코드

n = int(input())
arr = [float(input()) for _ in range(n)]
dp = [0]*n
dp[0] = arr[0]
for i in range(n-1):
    dp[i+1] = max(dp[i]*arr[i+1],arr[i+1])
print(f'{max(dp):.3f}')

 

 

댓글