본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬]2670번 연속부분최대곱

by 현장 2021. 10. 29.

-코드

n = int(input())
num = [float(input()) for _ in range(n)]
for i in range(1, n):
    num[i] = max(num[i], num[i - 1] * num[i])
print("%.3f" % round(max(num), 3))

처음에 연속되는 3개만 곱하는 줄 알고 dp로 했으나 틀려서 찾아보니 그냥 연속되는 숫자가 크면 개수 제한 없이 곱할 수 있는 문제여서 다시 찾아보았다.

찾아보니 현제값과 이전 값을 곱한 숫자들의 max를 해주면 최댓값만 곱하게 되어 결국 그 리스트는 각각 이전 값과 곱한 최대 값만 나오게 되므로 max를 해서 반올림을 해주면 된다는 것을 할게 되었습니다.

하지만 round로 했을 때, 틀렸다고 나와서 생각을 해보니 만약 1.2 값이면 1.200이 나와야 하는데 1.2가 나오기 때문에 틀리는 것 같아 소수점 3번째까지 출력이 되도록 다시 코딩을 하였다.

뭔가 쉬우면서도 특정 법칙을 찾는 것을 못해서 많이 아쉬웠던 문제였습니다.