코딩테스트 문제풀이/프로그래머스

[프로그래머스] 예산

itaeiou 2020. 2. 26. 16:56
반응형

프로그래머스

이분탐색

 

https://programmers.co.kr/learn/courses/30/lessons/43237

 

코딩테스트 연습 - 예산 | 프로그래머스

국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것입니다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있습니다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정합니다. 1. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정합니다. 2. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을

programmers.co.kr

 

 

#include <string>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

int solution(vector<int> budgets, int M) {
    int answer = 0;    
    
    sort(budgets.begin(), budgets.end());
        
    long sum = 0;
    for(int budget: budgets) sum += budget;
        
    if(sum <= M) return budgets[budgets.size()-1];
        
    int max = budgets[budgets.size()-1];
    int min = (int) floor(M / budgets.size());
    int mid = 0;
    int compareMid = 0;
        
    while(true){
     	mid = (int) ceil((max+min) / 2);
       	sum = 0;
        	
       	for(int budget: budgets) sum += ( budget > mid ) ? mid : budget;
        	
    	if(mid == compareMid){
    		answer = mid;
    		break;
    	}
        
        if(sum > M){
        	max = mid;
        } else {
        	min = mid;
        }
        compareMid = mid;
    }
    
    return answer;
}

 

참고

https://jee-goo.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%9D%B4%EB%B6%84%ED%83%90%EC%83%89%EC%98%88%EC%82%B0

 

[프로그래머스][이분탐색]예산

1.문제 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것입니다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있습니다. 그래서 정해진..

jee-goo.tistory.com

 

반응형