프로그래머: 여름/겨울 코딩(~2018) > 예산(lv1)

프로그래머 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12982

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr

문제 설명

S사는 부서별로 필요한 물품을 지원하기 위해 부서별 물품 구매에 필요한 수량을 조사하였다.

하지만 전체 예산이 정해져 있기 때문에 모든 부서의 품목을 구매할 수는 없습니다.

그래서 가능한 한 많은 부서에서 물건을 살 수 있도록 노력합니다.

상품 구매 시 각 부서에서 요청 금액 전액을 지원해야 합니다.

예를 들어 1,000원을 신청한 부서는 정확히 1,000원을 지원해야 하며, 1,000원 ​​미만은 지원할 수 없습니다.

함수를 완성하여 부서당 요청 금액과 예산을 매개변수로 하는 배열 d가 주어졌을 때 지원할 수 있는 최대 부서 수를 반환합니다.

제한

  • d는 부서에서 요청한 금액을 포함하는 배열이며 길이(총 부서 수)는 1에서 100 사이여야 합니다.

  • d의 각 요소는 부서에서 요청한 금액을 나타내며 부서에서 요청한 금액은 1에서 100,000 사이의 자연수입니다.

  • budget은 예산을 나타내며 1보다 크거나 같고 10,000,000보다 작거나 같은 자연수이다.


입출력 예시 | 디 | 가구 | 결과

(1,3,2,5,4) 9
(2,2,3,3) 10 4

암호

#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> d, int budget) {
    int answer = 0;
    
    // 오름차순 정렬을 해주어 작은 값 부터 계산하도록 설정
    sort(d.begin(), d.end());
    
    // 크기를 미리 얻어온다
    size_t Size = d.size();
    
    for(size_t i = 0; i < Size; ++i)
    {
        // 값을 먼저 판단 후 계산
        if(budget - d(i) >= 0)
        {
            ++answer;
            budget -= d(i);
        }
        else
        {
            break;
        }
    }
    
    return answer;
}

정확성



이 문제는 값을 정렬하고 빼기만 하면 되는 문제이므로 해결을 건너뜁니다.