Baekjoon 1744
수 묶기


QUESTION ❔



CODE ⌨️

#include <iostream>
#include <algorithm>
#include <deque>

using namespace std;
deque<int> DQplus;
deque<int> DQminus;

int N, num;
int frt, bck;
int sum = 0;

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	cin >> N;

	for (int i = 0; i < N; i++)
	{
		cin >> num;

		if (num > 0)
		{
			DQplus.push_back(num);
		}
		else
		{
			DQminus.push_back(num);
		}
	}

	sort(DQplus.begin(), DQplus.end(), greater<int>());
	sort(DQminus.begin(), DQminus.end(), less<int>());

	while (!DQplus.empty())
	{
		frt = DQplus.front();
		DQplus.pop_front();

		if (DQplus.empty())
		{
			sum += frt;
			break;
		}
		else
		{
			bck = DQplus.front();
			DQplus.pop_front();
		}

		if (frt > 1)
		{
			if (bck > 1) sum += frt * bck;
			else sum += frt + bck;
		}
		else if (frt > 0 && frt <= 1)
		{
			sum += frt + bck;
		}
	}

	while (!DQminus.empty())
	{
		frt = DQminus.front();
		DQminus.pop_front();

		if (DQminus.empty())
		{
			sum += frt;
			break;
		}
		else
		{
			bck = DQminus.front();
			DQminus.pop_front();
		}

		if (bck <= 0) sum += frt * bck;
		else sum += frt + bck;
	}

	cout << sum << "\n";

	return 0;
}



RESULT 💛



SIMPLE DISCUSSION ✏️

Greedy 알고리즘 관련 좋은 문제였다. 항상 상황에 맞게, 반례를 잘 고려하며 문제를 해결해야 한다는 것을 다시 한 번 느꼈다.



SOURCE 💎

Baekjoon_Link 👈 Click here


*****
NOT A TALENT ❎ NOT GIVING UP ✅
CopyRight ⓒ 2022 DCherish All Rights Reserved.