반응형
    
    
    
  -문제

-코드
혼자 푼 코드, 좀 더 일반화 필요해보임 => 좋은 코드 : 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 | 
 
                    
                   
                    
                   
                    
                  