반응형
https://leetcode.com/problems/minimum-subsequence-in-non-increasing-order/description/
구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 전체 원소의 합 totalSum과 부분 수열의 합 sum, 정답 vector ans를 선언 후 적절한 값을 넣어줍니다. accumulate 함수를 사용하면 쉽게 vector 내 원소 합을 구할 수 있습니다.2. nums를 내림차순으로 정렬합니다.
📔 풀이과정
내림차순으로 정렬된 nums의 좌측부터 loop를 돌면서 더하면 최소의 원소개수로 최대의 합을 구할 수 있습니다.
1. sum을 계속 더해가며 ans에 현재 원소를 push_back해줍니다.
2. sum은 포함된 원소들의 합, totalSum - sum이 포함되지 않은 원소들의 합이므로 sum이 더 커진다면 loop break합니다.
📔 정답 출력 | 반환
ans를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
vector<int> minSubsequence(vector<int>& nums) {
int sum = 0;
vector <int> ans;
int totalSum = accumulate(nums.begin(), nums.end(), 0);
sort(nums.rbegin(), nums.rend());
for(auto n : nums) {
if(totalSum - sum < sum) {
break;
}
ans.push_back(n);
sum += n;
}
return ans;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.