practivceAlgorithm/백준

[백준][Python] 2670 연속 부분 최대곱

findTheValue 2021. 10. 18. 04:44

나냐 전이냐. 보통 내가 1보다 크면 무조건 큰 값이 나온다.

근데 만약 1보다 작은 값이 계속되어 1 미만으로 떨어질 때

나보다 작아지면 굳이 그 연속 부분을 끌고갈 필요가 없다.

 

import sys
input = sys.stdin.readline

N = int(input())
li = [float(input()) for _ in range(N)]
for i in range(1, N):
    li[i] = max(li[i], li[i]*li[i-1])
print(f"{max(li):.3f}")

 

 

스터디 다른분이 소개해주신 카데인 알고리즘.

import sys
input = sys.stdin.readline

N = int(input())
cur = 1
answer = 1
max_num = 0
for _ in range(N):
    num = float(input())
    max_num = max(num, max_num)

    cur = max(num, cur*num)
    answer = max(answer, cur)

if answer > 1:
    print("{:.3f}".format(answer))
else:
    print("{:.3f}".format(max_num))