알고리즘/종만북
[C++] 종만북 1장 - FESTIVAL
Esunn
2022. 8. 2. 17:12
https://algospot.com/judge/problem/read/FESTIVAL
종만북의 첫 문제이다.
먼저 테스트 케이스가 주어진 후, 록 페스티벌을 하게 되는데 빌릴 수 있는 공연장의 가격과 수가 주어지고 최소 공연 날짜가 주어진다.
얘를 들어 6과 3이 주어지면 6일간 대여할 때 각각의 가격을 알려주고 최소한 3일을 빌려야 한다는 것이다.
이렇게 최소 공연수 이상으로 평균 대여 가격이 낮게 빌리면 된다.
#include <iostream>
using namespace std;
int main() {
cout << fixed;
cout.precision(9);
int TestCase;
cin >> TestCase;
for (int i = 0; i < TestCase; i++) {
int n, l;
cin >> n >> l;
double sum = 0;
int cnt = 0;
double avg;
double min = 101;
int cost[1001] = { 0, };
for (int i = 0; i < n; i++) cin >> cost[i];
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
sum += cost[j];
cnt++;
if (cnt >= l) {
avg = sum / cnt;
if (avg < min) min = avg;
}
}
sum = 0;
cnt = 0;
}
cout << min << "\n";
}
}
주어진 각각의 항을 모두 계산하도록 코드를 짰다.
주어진 평균 가격을 배열에 담고 최소 공연수보다 크거나 같을 때 평균을 담는 식으로 짰다.
반복문을 이용해 모든 평균 조합을 찾아내 최소 평균을 찾는다.
cout << fixed;
cout.precision(9);
소수점을 9개까지 출력하는 코드이다.
개인적으로 매우 어려웠다. 백준 브론즈에게는 너무 어려웠던 문제였다.
처음에는 첫 번째 배열에서 1부터 끝까지 조합을 찾는 식으로 했는데 안돼서 헤매었더니
1 2 3 1 2 3 이 있다면 앞에서부터 고르는 줄 알고 코드를 짰지만
2 3 1 이런 식으로도 고를 수 있는 문제였다.
종만북 1장이 이 정도라니 앞길이 막막하다.