https://softeer.ai/practice/formCodeEditor.do
Softeer
405 ERROR 지금 입력하신 주소의 페이지는 사라졌거나 다른 페이지로 변경되었습니다. 주소를 다시 확인해주세요. 홈으로 이전 페이지
softeer.ai
풀이
무게 당 가격이 주어질 때, 가방을 채울 수 있는 최대 가치를 구하는 문제입니다.
1단위로 쪼개서 가방을 채울 수 있으므로, 가치가 높은 것부터 최대로 채우는 것이 정답이 됩니다.
따라서, 금속 가치에 따라 내림차순 정렬 후 그리디 하게 처리하면 해결할 수 있는 간단한 문제입니다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int W, N, M, P, ans=0;
bool cmp(pair<int, int>& a, pair<int, int>& b)
{
return a.second > b.second;
}
int main(int argc, char** argv)
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> W >> N;
vector<pair<int, int> > v(N);
for (int i=0; i<N; i++) {
cin >> v[i].first >> v[i].second;
}
sort(v.begin(), v.end(), cmp);
for (int i=0; i<v.size(); i++) {
if (v[i].first >= W){
ans += W*v[i].second;
break;
}
else{
W -= v[i].first;
ans += v[i].first * v[i].second;
}
}
cout << ans << endl;
return 0;
}
'Softeer' 카테고리의 다른 글
[C++, Python] Softeer Lv2 나무공격 (2) | 2024.08.01 |
---|---|
[C++] 소프티어 [인증평가(1차) 기출] 로봇이 지나간 경로 (0) | 2023.01.24 |
[C++] 소프티어 [인증평가(5차) 기출] 업무 처리 (0) | 2023.01.24 |
[C++] 소프티어 [인증평가(5차) 기출] 성적 평가 (0) | 2023.01.23 |
[C++] 소프티어 [인증평가(4차) 기출] 슈퍼컴퓨터 클러스터 (0) | 2023.01.18 |