Programmers: 예산

KangDroid·2021년 5월 6일
0

Algorithm

목록 보기
15/27

문제

문제 설명

  • 최대한 많은 부서를 지원하려고 하는데 몇개의 부서에 지원이 가능한가?
  • 그냥 예산 적게 요청하는 부서부터 차례로 지원하면 결국 최대한 많은 부서 지원 가능이 됨

알고리즘

  • 부서 예산 리스트를 정렬한다
  • 부서 리스트를 돌면서
    • 각 부서에서 사용하는 예산 + 현재 총 사용한 예산 <= 쓸 수 있는 총 예산 이면
    • 현재 총 사용한 예산 += 각 부서에서 사용하는 예산 업데이트
    • 그리고 부서 카운트 증가
  • 끝![전형적이고 기본적인 그리디 알고리즘!]

코드

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> d, int budget) {
    sort(d.begin(), d.end());
    int sum = 0;
    int counter = 0;

    for (int i = 0; i < d.size(); i++) {
        if (d[i] + sum <= budget) {
            sum += d[i];
            counter++;
        }
    }
    return counter;
}
profile
Student Platform[Backend] Developer

0개의 댓글

관련 채용 정보