알고리즘/종만북

[C++] 종만북 1장 - FESTIVAL

Esunn 2022. 8. 2. 17:12

https://algospot.com/judge/problem/read/FESTIVAL

 

algospot.com :: FESTIVAL

록 페스티벌 문제 정보 문제 커다란 공연장을 빌려서 록 페스티벌을 개최하려고 합니다. 이 페스티벌은 여러 날 동안 진행되며, 하루에 한 팀의 밴드가 공연장에서 콘서트를 하게 됩니다. 전체

algospot.com

 

종만북의 첫 문제이다.

먼저 테스트 케이스가 주어진 후, 록 페스티벌을 하게 되는데  빌릴 수 있는 공연장의 가격과 수가 주어지고 최소 공연 날짜가 주어진다.

 

얘를 들어 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장이 이 정도라니 앞길이 막막하다.