[2670] 연속부분최대곱

문제

많이 알려진 부분최대합 문제의 변형으로 이번엔 최대 곱을 구하는 문제이다. 푸는 방식은 거의 같으나 연속된 부분을 자르는 기점이 최대 부분합에서는 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 미만의 숫자라면 그 값들 중 최대 값을 출력하도록 하였다.

좋은 웹페이지 즐겨찾기