https://www.acmicpc.net/problem/2670
1. 난이도 실버4 (🥈)
2. 문제 해결 방법
DP를 이용해서 문제를 해결했다.
(현재의 값)과 (전까지의 최대곱 * 현재의 값) 중 더 큰 값을 dp에 넣으면 된다.
round(num, 3) => 소수점 셋째자리까지 출력이지만 1.0 이었을 경우 1.0 으로 출력되어 오답처리된다.
따라서 ('%.3f' %max(dp))로 해야한다.
3. 내가 작성한 코드
n = int(input())
dp = [[0] for _ in range(n)]
for i in range(n):
num = float(input())
if i == 0:
dp[0] = num
else:
dp[i] = max(num, dp[i-1] * num)
print('%.3f' %max(dp))
4. 메모
round(num, n) => num의 n번째 자리까지 출력, 원래 값이 더 짧았을 경우엔 그냥 출력됨 ex)1.0
.'%.nf' %num => num의 n번째 자리까지 출력, 원래 값이 더 짧으면 0으로 자릿수가 맞춰서 출력됨 ex)1.000
+ '{}'.format('value') => value
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 11659 구간 합 구하기 4(python)(누적합) (0) | 2023.03.01 |
---|---|
[백준] 10986번 나머지 합(python)(누적합) (0) | 2023.03.01 |
[백준] 2407번 조합(python)(dp) (0) | 2023.03.01 |
[백준] 11055번 가장 큰 증가 부분 수열(python)(dp) (0) | 2023.03.01 |
[백준] 11053번 가장 긴 증가하는 부분 수열(python)(dp) (0) | 2023.03.01 |
댓글