백준/증가수열 & 투포인터

[백준 2670번 / C++ ] 연속부분최대곱

배발자 2022. 2. 8.
반응형

1. double 타입의 벡터 배열 생성.

2. 벡터 첫번째 원소를 가지고 있는 b라는 변수 생성.

3. 벡터의 사이즈만큼 반복문 돌리면서 연속된 값의 곱셈이 현재 위치의 벡터 원소보다 작으면 b 변수에 현재 벡터 원소 값 저장. 그렇지 않다면 연속된 값 곱하기. 

4. reuslt 값이 최대값인 것을 계속 갱신하기.

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std; 
int main() {
	int n; cin >> n; 
	vector <double> v(n,0);
	for (int i = 0; i < n; i++) {
		cin >> v[i]; 
	}
	double b = v[0];
	double result = 0; 
	for (int i = 1; i < n; i++) {
		if (v[i] > v[i]*b)b = v[i]; 
		else {
			b *= v[i]; 
		}
		result = max(result, b); 
	}
	printf("%.3lf", result );  
	return 0; 
}

 

 

2670번: 연속부분최대곱

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

www.acmicpc.net

 

반응형

댓글