본문 바로가기

알고리즘/python

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

반응형

[문제 출처]

https://www.acmicpc.net/problem/2670

 

2670번: 연속부분최대곱

첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나

www.acmicpc.net

 

[문제 풀이]

dp라는 이름의 리스트에 i-1번째와 i번째의 곱과 i번째 수 중에 더 큰 값을 저장한다.

dp에 값을 다 채운 후에 가장 큰 값을 출력한다.

 

* 문제에서 결과를 소수점 넷째 자리에서 반올림하여 셋째 자리까지 출력하라고 하였기에

처음에는 round(max(dp), 3)를 사용했는데 틀렸고 아래 코드의 출력으로 바꿨을 때 정답이 나왔다.

import sys
input = sys.stdin.readline

n = int(input())

data = []
for _ in range(n):
    data.append(float(input()))

dp = [0 for _ in range(n)]
dp[0] = data[0]

for i in range(1, n):
    dp[i] = max(dp[i-1]*data[i], data[i])

print('%0.3f' % max(dp))
반응형