Approach
- 배열에 존재하는 값들중에서 쌍을 이뤄 그중 작은 요소의 값들끼리 합한 것들중에서 가장 큰 값을 찾는 것이다.
- 작은 건 작은 것들끼리, 큰 건 큰 것들끼리 쌍을 이뤄준다. 그러기 위해서 sort함수를 통해 정렬해주었다.
- sum 변수를 0으로 초기화 시켜 for문을 돌려서 nums에 있는 요소 두 개씩 가져와 MinNum 함수를 통해 요소 중 작은 값을 return하여 sum에 더하도록 구현하였다.
Code
class Solution {
public:
int MinNum(int a, int b)
{
if(a>b) return b;
return a;
}
int arrayPairSum(vector<int>& nums) {
sort(nums.begin(), nums.end());
int sum = 0;
for(int i = 0; i < nums.size(); i+=2)
{
sum += MinNum(nums[i], nums[i+1]);
}
return sum;
}
};
Result

추가적인 해결방법
class Solution {
public:
int arrayPairSum(vector<int>& nums) {
int sum = 0;
sort(nums.begin(), nums.end());
for(int i = 0; i < nums.size(); i+=2)
{
sum += nums[i];
}
return sum;
}
};
