-코드
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번째까지 출력이 되도록 다시 코딩을 하였다.
뭔가 쉬우면서도 특정 법칙을 찾는 것을 못해서 많이 아쉬웠던 문제였습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬]23343번 JavaScript (0) | 2021.10.30 |
---|---|
[백준/파이썬]10834번 벨트 (0) | 2021.10.30 |
[백준/파이썬]20551번 Sort 마스터 배지훈의 후계자 (0) | 2021.10.28 |
[백준/파이썬]1850번 최대공약수 (0) | 2021.10.27 |
백준/파이썬]17173번 배수들의 합 (0) | 2021.10.27 |