프로그래머스 코딩테스트 연습 - 예산 (Level 1)
PS/Programmers

프로그래머스 코딩테스트 연습 - 예산 (Level 1)

programmers

 

문제

프로그래머스 코딩테스트 연습 - 예산 (Level 1)

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

 

코딩테스트 연습 - 예산

S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는

programmers.co.kr


사용 알고리즘

- Greedy

 

풀이

greedy적 접근.

오름차순으로 정렬해서 budget을 넘기 전까지 누적해 더해가며 몇 개를 더했는지를 계산한다.

 

나의 코드

#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> d, int budget) {
    int answer = 0, sum=0;
    sort(d.begin(),d.end());
    for(auto i:d){
        if(i+sum>budget) break;
        sum+=i;
        answer++;
    }
    return answer;
}

 

남의 코드(좋아요 최다 코드)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> d, int budget) {
    sort(d.begin(), d.end());
    int i;
    for (i = 0; (budget=budget-d[i]) >= 0 && i < d.size(); i++) ;
    return i;
}

 

728x90