[프로그래머스/C++]Lv.1 - 예산

YH J·2023년 6월 6일
0

프로그래머스

목록 보기
119/168

문제 링크

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

내 풀이

일단 d를 오름차순으로 정렬 ( 작은값부터 더하는게 가장 횟수가 많다) 더해가면서 budget을 넘으면 i반환(해당 인덱스 더하기 전의 더한 횟수) , 딱 맞아 떨어지면 i + 1반환
for문을 탈출하면(다 더해서 딱맞아떨어지거나 budget보다 작은 경우) d의 size() 반환

내 코드

#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> d, int budget) {
    int answer = 0;
    
    sort(d.begin(), d.end());
    int sum = 0;
    for(int i = 0; i < d.size(); i++)
    {
        sum += d[i];
        if(sum > budget)
            return i;
        else if(sum == budget)
            return i + 1;
    }
    
    return d.size();
}

다른 사람의 풀이

#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;
}

다른 사람의 풀이 해석

하나하나 더해가면서 비교하지 않고 budget에서 빼가면서 계산하였다.

profile
게임 개발자 지망생

0개의 댓글