많이 알려진 부분최대합 문제의 변형으로 이번엔 최대 곱을 구하는 문제이다. 푸는 방식은 거의 같으나 연속된 부분을 자르는 기점이 최대 부분합에서는 0보다 작을 때 였는데 최대 곱에서는 누적곱이 1보다 작을 때 연속된 부분을 끊는다는 점이 다르다.
tc = int(input())
mx = 0
tmp = 1
arr = [float(input()) for i in range(tc)]
for i in range(tc):
n = arr[i]
tmp *= n
if tmp < 1:
tmp = 1
mx = max(mx, tmp)
if mx == 1:
print("{:.3f}".format(max(arr)))
else:
print("{:.3f}".format(mx))
소수점 이하 셋째 자리까지 출력해야하는 출력 조건에 맞춰 round()대신 format을 썻다.
n개의 숫자 입력이 모두 1 미만의 숫자라면 그 값들 중 최대 값을 출력하도록 하였다.