반응형
-문제
-코드
혼자 푼 코드, 좀 더 일반화 필요해보임 => 좋은 코드 : https://mygumi.tistory.com/220
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n=0, sum=0 ,p=0;
scanf("%d", &n);
vector<int> a(n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
sort(a.begin(), a.end());
while (p <= n - 1)
{
if (a[p] <= 0)
{
if (p + 1 < n && a[p + 1] <= 0)
{
if (a[p] * a[p + 1] > a[p] + a[p + 1])
{
sum += a[p] * a[p + 1];
}
else
{
sum += a[p] + a[p + 1];
}
if (p < n - 2) p += 2;
else break;
}
else
{
sum += a[p];
break;
}
}
else break;
}
p = n - 1;
while (p >= 0)
{
if (a[p] > 0)
{
if (p - 1 >= 0 && a[p -1] > 0)
{
if (a[p] * a[p - 1] > a[p] + a[p - 1])
{
sum += a[p] * a[p - 1];
}
else
{
sum += a[p] + a[p - 1];
}
if (p >= 2) p -=2;
else break;
}
else
{
sum += a[p];
break;
}
}
else break;
}
printf("%d", sum);
return 0;
}
반응형
'이론 > 코딩테스트' 카테고리의 다른 글
[백준] 1343번 폴리오미노 (그리디 알고리즘) (0) | 2022.08.19 |
---|---|
[백준] 1339번 단어수학 (그리디 알고리즘) (0) | 2022.08.18 |
[백준] 1049번 기타줄 (그리디 알고리즘) (0) | 2022.08.15 |
[백준] 1715번 카드 정렬하기 (그리디 알고리즘, 우선순위큐) (0) | 2022.08.09 |
[백준] 1520번 내리막 길 (DFS + DP) (0) | 2022.08.08 |