1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <iostream> #include <vector> #include <algorithm> using namespace std; /* 최대한 많은 부서의 물품을 구매해 줄 수 있도록 (부서의 수가 최대여야 함.) 각 부서당 신청금액에 부족하지 않게 정확히 지급. d : 부서별로 신청한 금액 / 길이 : 1이상 100 이하 / 각 원소 : 1이상 100,000이하 budget : 총 예산 / 값 : 1이상 10,000,000이하 최대 몇개의 부서에 물품 지원 가능? 알고리즘 : 지원해 주는 부서의 수가 최대가 되어야 하므로, 부서별 신청 금액이 낮은 부서부터 지원해줘야 한다. */ int solution(vector<int> d, int budget) { int answer = 0; // 부서별 신청 금액을 오름차순으로 정렬. sort(d.begin(), d.end()); // 0번 인덱스의 값부터 총 예산에서 빼면서, 뺄 때 마다 횟수를 계산. 해당 횟수가 답임. for(int i = 0; i < d.size(); i++){ // 현재 체크중인 부서의 신청 금액이 남은 예산금액보다 클 경우, // 지원이 불가하므로 answer을 그대로 반환 if(budget - d[i] < 0){ return answer; } // 그렇지 않을 경우, // 해당 부서를 지원하고, answer의 값을 1 증가시킴. budget -= d[i]; answer++; } return answer; } | cs |
'Problem-solving > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 실패율 (C++) (0) | 2020.03.24 |
---|---|
프로그래머스 - [1차] 비밀지도 (C++) (0) | 2020.03.21 |
프로그래머스 - 콜라츠 추측 (C++) (0) | 2020.03.20 |
프로그래머스 - 최대공약수와 최소공배수 (C++) (0) | 2020.03.13 |
프로그래머스 - 짝수와 홀수 (C++) (0) | 2020.03.13 |
댓글