sort()의 비교 함수를 작성해서 양의 정수, 음의 정수, 0 순서대로 정렬했다. 처음에는 양의 정수끼리와 음의 정수끼리는 무조건 곱하도록 했는데, 생각해보니 1,1의 경우에는 곱하기보다 더하기의 값이 더 컸다. 따라서 arr[i] * arr[i + 1] > arr[i] + arr[i + 1]
일 경우에 두 수를 묶도록 고치는 걸로 바꿨다.
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 10000
bool comparator(const int& a, const int& b) {
if(a <= 0 && b <= 0)
return a < b;
return a > b;
}
int main() {
std::ios::sync_with_stdio(false);
int N;
int sum = 0;
int arr[MAX];
cin >> N;
for(int i = 0; i < N; i++)
cin >> arr[i];
sort(arr, arr + N, comparator);
for(int i = 0; i < N; i++) {
if(i + 1 < N) {
if(arr[i] * arr[i + 1] > arr[i] + arr[i + 1])
sum += arr[i] * arr[++i];
else
sum += arr[i];
}
else {
sum += arr[i];
}
}
cout << sum;
}
안녕하세요, tech 기업에서 일하는/ 일하기를 희망하는 여성들을 모아서 모임을 만드는데 참여하시면 좋을 것 같아요!
자세한 사항은 및 링크 참조바랍니다 :)
https://velog.io/@emilyscone/SheKorea-1%EA%B8%B0-%EB%A9%A4%EB%B2%84%EB%A5%BC-%EB%AA%A8%EC%A7%91%ED%95%A9%EB%8B%88%EB%8B%A4