문제 설명
물이 담긴 N 개의 잔과 각각의 용량 목록이 주어집니다. 작업은 정확히 K개의 잔을 채우는 데 필요한 최소 병 수를 찾는 것입니다. 각 병의 용량은 100개입니다.
예시
N =5, K =4인 경우 용량[] ={1, 2, 3, 2, 1}.
- 2, 3, 2 용량의 안경을 채우려면 8단위가 필요합니다.
- 이렇게 하면 1병만 열 수 있습니다.
알고리즘
- K 안경을 정확히 작성하려면 최소 용량의 K 안경을 가져가세요.
-
총 필요한 병은 다음과 같이 계산할 수 있습니다. -
(1st k 잔의 용량 합계) / (1병 용량)의 상한값.
예시
#include <iostream> #include <algorithm> #include <cmath> using namespace std; int minBottles(int *capacity, int n, int k) { sort(capacity, capacity + n); int sum = 0; for (int i = 0; i < k; ++i) { sum += capacity[i]; } return ceil((double)sum/100); } int main() { int capacity[] = {1, 2, 3, 2, 1}; cout << "Min bottles required = " <<minBottles(capacity, 5, 4) << endl; return 0; }
출력
위의 프로그램을 컴파일하고 실행할 때. 다음 출력을 생성합니다 -
Min bottles required = 1