반응형
문제
N개의 실수가 있을 때, 한 개 이상의 연속된 수들의 곱이 최대가 되는 부분을 찾아, 그 곱을 출력하는 프로그램을 작성하시오. 예를 들어 아래와 같이 8개의 양의 실수가 주어진다면,
색칠된 부분의 곱이 최대가 되며, 그 값은 1.638이다.
문제풀이
n=int(input())
#01
dp=[float(input()) for _ in range(n)]
for i in range(1,n):
#02
dp[i]=max(dp[i-1]*dp[i],dp[i])
print("{:.3f}".format(max(dp)))
- #01 : dp라는 리스트에 입력값을 실수형태로 저장한다.
- #02 : dp[i]에는 현재값과 이전값의 곱과 현재값 중 더 큰 값을 저장한다.
즉 문제에서 요구하는 "연속"하는 값의 곱 중 가장 큰 값을 얻기 위해
리스트의 처음부터 끝까지 돌며 최선의 곱셈을 하였을 때 나올 나오는 값을 저장한 것이다.
- #03 : 실수형태로 소수점 3자리까지 dp의 최대값을 출력한다.
+ 참고로 dp에 최종적으로 저장된 값이다.
'프로그래밍 > 백준' 카테고리의 다른 글
[알고리즘] 백준 25206 파이썬 - 너의 평점은 (3) | 2023.04.05 |
---|---|
[알고리즘] 백준 25644 파이썬 - 최대 상승 (2) | 2023.04.04 |
[알고리즘] 백준 1822 파이썬 - 차집합 (2) | 2023.04.02 |
[알고리즘] 백준 5636 파이썬 - 소수 부분 문자열 (2) | 2023.04.01 |
[알고리즘] 백준 10844 파이썬 - 쉬운 계단 수 (dp) (2) | 2023.03.31 |