개발자 톡

연습문제 톡 금고털이

코드 공유 드립니다. 더 이쁘게 만들 수 있는 방법 공유 주시면 감사히 참고하겠습니다.

등록일
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;

}

#금고털이
#cpp

이 카테고리의 톡 더보기