-
[2670] 연속부분최대곱BOJ 2021. 10. 12. 00:27
https://www.acmicpc.net/problem/2670
2670번: 연속부분최대곱
첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나
www.acmicpc.net
<문제>
i번째 수를 하나씩 확인한다고 생각할때,
지금까지(i-1까지) 곱해온것에 현재(i)를 곱한것이 더 크다면 곱하고, 아니라면 현재의 수로 유지한다.
정답을 그때그때 최대값으로 갱신해둔다면, 정답이 어디있는지를 찾을필요없이 바로 출력할 수 있다.
<소스코드>
1234567891011121314151617181920#include <bits/stdc++.h>using namespace std;int n;int main(void) {int i, j;cin >> n;vector<double> v(n);double ans;for (i = 0; i < n; i++) {cin >> v[i];ans = max(v[i], ans);}for (i = 1; i < n; i++) {v[i] = max(v[i - 1] * v[i], v[i]);ans = max(v[i], ans);}printf("%.3lf", ans);return 0;}cs 'BOJ' 카테고리의 다른 글
[9660] 돌 게임 6 (0) 2021.10.12 [9659] 돌 게임 5 (0) 2021.10.12 [15489] 파스칼 삼각형 (0) 2021.10.12 [22869] 징검다리 건너기 (small) (0) 2021.10.12 [21317] 징검다리 건너기 (0) 2021.10.11