개발자 톡
코드 공유 드립니다. 더 이쁘게 만들 수 있는 방법 공유 주시면 감사히 참고하겠습니다.
- 등록일
- 2024-03-19 15:19:41
- 조회수
- 374
- 작성자
- imim0523
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef struct{
int W;
int M;
} st_stone;
class stones{
public:
stones() {}
void insert(int W, int M){
st_stone temp_stone = {.W = W, .M = M};
items.push_back(temp_stone);
}
void Sort(){
sort(items.begin(), items.end(), [](const st_stone &a, const st_stone &b){
return a.M < b.M;
});
}
int Max_Money(int weight){
int money = 0;
this->Sort();
while (weight != 0){
st_stone stone = items.back();
if (stone.W >= weight){
money += weight * stone.M;
weight = 0;
}
else{
money += stone.W * stone.M;
weight -= stone.W;
items.pop_back();
}
}
return money;
}
public:
vector<st_stone> items;
};
int main(int argc, char** argv)
{
int weight = 0, kind = 0;
stones S;
cin >> weight >> kind;
for (int i = 0; i < kind; i++){
int w, m;
cin >> w >> m;
S.insert(w, m);
}
std::cout << S.Max_Money(weight) << std::endl;
return 0;
}