링크 : https://algospot.com/judge/problem/read/FESTIVAL
간만에 vector을 이용해봤다. 자료구조 공부했을 때, 교수님이 벡터 못쓰게해서 매우 힘들었는데 지금 쓰니까 겁나 편하다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int testcase, possible, already, num;
cin >> testcase;
vector<double> result;
for (int i = 0; i < testcase; i++) {
cin >> possible >> already;
vector<int> vec;
//비용값 벡터에 넣기
for (int j = 0; j < possible; j++) {
cin >> num;
vec.push_back(num);
}
//최소 비용 찾아내기
double sum = 0;
double minsum = 100;
//몇 날을 탐색할 것인지
for (int day = already; day < possible; day++) {
//총 몇번 탐색이 되는지
for (int iter = 0; iter < possible-day+1; iter++) {
//cost값 더하기
for (int idx = iter; idx < iter + day; idx++) {
sum += vec[idx];
}
minsum = min(minsum, (double)(sum/day));
sum = 0;
}
}
result.push_back(minsum);
}
cout << fixed;
cout.precision(10);
for (int i = 0; i < testcase; i++)
cout << result.at(i) << endl;
}
소수점 몇번째 자리까지 나오게 하기 위해서 precision
을 사용하였다.
cout << fixed;
cout.precision(10);
이렇게 설정하니까 아래의 for문에서는 모두 소수점 10번째자리까지 잘 나왔다. 참고 : https://atomic0x90.github.io/c++/2020/02/10/c++-decimal-place.html