Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- boj
- DP
- BFS
- 투 포인터
- 모던 JavaScript 튜토리얼
- 트리
- Python
- 싸피
- 플로이드-워셜
- DFS
- 그리디
- 에라토스테네스의 체
- 세그먼트 트리
- 해시 테이블
- 이분 탐색
- 정렬
- 맵
- 슬라이딩 윈도우
- 그래프
- 구현
- 정수론
- 누적 합
- 애드 혹
- 2357
- 브루트포스
- 수학
- 13164
- 문자열
- SSAFY
- JavaScript
Archives
- Today
- Total
흙금이네 블로그
[BOJ] 2670 - 연속부분최대곱 (Python, JavaScript) 본문
아이디어
DP로 현재 수까지의 곱과 현재 수를 비교하여 갱신하면서 곱의 최댓값을 저장해 나간다.
풀이 #1 (Python)
이 문제가 그리디인지 DP인지 고민했는데, 이전 값이 현재 선택에 영향을 미치기 때문에 DP라고 이해했다.
import sys
input = sys.stdin.readline
def solution():
N = int(input())
temp = 1
res = 0
for i in range(N):
number = float(input())
temp *= number
if number > temp:
temp = number
if temp > res:
res = temp
print(f'{res:.3f}')
solution()
아래 테스트 케이스 수들의 곱은 1185.9705로, 소수점 이하 넷째 자리에서 반올림하면 1185.971이 된다.
하지만 실수 계산의 오차를 감안하여 이 문제에서는 1185.970를 출력하는 코드도 허용된다.
파이썬에서는 반올림하는 자리의 숫자가 5인 경우 앞 숫자가 홀수면 올림, 짝수면 내림하는 오사오입 방식을 사용한다.
4
1.3
9.9
9.7
9.5
풀이 #2 (JavaScript)
자바스크립트에서도 반올림 시 오사오입 방식이 사용된다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
function solution() {
const N = Number(input[0]);
let temp = 1;
let res = 0;
for (let i=1; i<=N; i++) {
number = Number(input[i]);
temp *= number;
if (number > temp) temp = number;
if (temp > res) res = temp;
}
console.log(res.toFixed(3));
}
solution();
'알고리즘' 카테고리의 다른 글
[BOJ] 13911 - 집 구하기 (Python) (0) | 2023.05.30 |
---|---|
[BOJ] 25214 - 크림 파스타 (Python, JavaScript) (0) | 2023.05.30 |
[BOJ] 15489 - 파스칼 삼각형 (Python, JavaScript) (0) | 2023.05.28 |
[BOJ] 13699 - 점화식 (Python, JavaScript) (1) | 2023.05.27 |
[BOJ] 16988 - Baaaaaaaaaduk2 (Easy) (Python, JavaScript) (0) | 2023.05.26 |
Comments