[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 미만의 숫자라면 그 값들 중 최대 값을 출력하도록 하였다.
Author And Source
이 문제에 관하여([2670] 연속부분최대곱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@deankang97/백준-2670-연속부분최대곱저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)