๐Ÿ’ฅ 1202 ๋ณด์„ ๋„๋‘‘ _๊ทธ๋ฆฌ๋”” ์—…๋ฐ์ดํŠธ

phoenixKimยท2022๋…„ 7์›” 25์ผ
0

๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
45/174

์ตœ๊ทผ ํ’€์ด : 241101

: ๊ธฐ์กด ๊ทธ๋ฆฌ๋””์™€๋Š” ๋‹ค๋ฅด๊ฒŒ

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ
bag์˜ ๋ฌด๊ฒŒ์™€ gems์˜ ๋ฌด๊ฒŒ๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ bag๋ณด๋‹ค ๋ฌด๊ฒŒ๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ์—
jems์˜ ๊ฐ€๊ฒฉ๊ณผ ๋น„๊ต๋ฅผ ํ•˜๋ฉด์„œ pq์—๋‹ค๊ฐ€ ๋„ฃ๋Š”๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•˜๋Š” ๊ฑฐ๋Š” ๊ฐ€์žฅ ๋†’์€ ๊ฐ€๊ฒฉ์ด๋‹ˆ๊นŒ.
pq์— top์ด ๋†’์€ ๊ฐ€๊ฒฉ์ด ์˜ฌ๋ผ์˜ฌ์ˆ˜ ์žˆ๊ฒŒ ๋””ํดํŠธ๋กœ ์ •๋ ฌํ•ด๋†“์ž.

1) bag๋ณด๋‹ค ๋ฌด๊ฒŒ๊ฐ€ ์ž‘์€ jems๋“ค์„ ํƒ€๊ฒŸ์œผ๋กœ ํ•ด์„œ ๋ชจ๋‘ ๋‹ค pq ๋„ฃ์ž.
2) ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๊ฐ€๋ฐฉ ๋ฌด๊ฒŒ๋ณด๋‹ค ๋†’์€ jems์ด ๋‚˜์˜ค๋ฉด ํƒˆ์ถœ
-> ๊ฐ€๋ฐฉ ํ•˜๋‚˜์— jems 1๊ฐœ ๋„ฃ์„ ์ˆ˜ ์žˆ์„๋‹ˆ๊นŒ. top์— ์žˆ๋Š” ํ•˜๋‚˜๋ฅผ ๋ฝ‘์ž.

3) ๊ทธ๋ฆฌ๊ณ  ์ด์ œ bag ์˜ ์ธ๋ฑ์Šค๋ฅผ ํ•˜๋‚˜ ์ฆ๊ฐ€ํ•ด์„œ ๊ทธ๊ฑฐ๋ž‘ ๋‹ค์Œ๋ฒˆ์— ์žˆ๋Š” gems๋ฅผ ๋น„๊ตํ•œ๋‹ค.


๐Ÿ˜œ์ตœ๊ทผ ํ’€์ด : 240205

: ๋‚ด ์ƒ๊ฐ์—๋Š” ๊ฐ€๋ฐฉ์ด๋ž‘ ๋ณด์„ ๋‘˜๋‹ค ๋ฌด๊ฒŒ๋ฅผ ๊ฐ€์žฅ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•œ ์ƒํƒœ์—์„œ ์ง„ํ–‰ํ•˜๊ณ ์ž ํ•จ.

๋‚ด๊ฐ€ ์™œ ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ๋ƒ๋ฉด?

1 10
1 9
1 5
3 50
5 4
10 100
์ด๋ ‡๊ฒŒ ๋ณด์„์ด ์žˆ๊ณ ,
๊ฐ€๋ฐฉ์€ 1๊ฐœ ์ธ๋ฐ ๋ฌด๊ฒŒ๊ฐ€ 3์งœ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

  • ๊ทธ๋Ÿฌ๋ฉด ๊ตณ์ด ๋ณด์„ (5,4) (10 , 100) ์— ๊ด€ํ•ด์„œ๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž„.

๊ฐ€๋ฐฉ์—๋‹ค๊ฐ€ ์ž…๋ ฅํ•  ๋•Œ๋ถ€ํ„ฐ pair< ๋ฌด๊ฒŒ , ๊ฐ€๊ฒฉ ์ œ์ผ ํฐ๊ฑฐ> ๋กœ ๋„ฃ๊ธฐ ์œ„ํ•ด pq๋ฅผ ์ด๋Ÿฐ์‹์œผ๋กœ ๊ตฌ์„ฑํ•จ.
priority_queue<pair<int,int> ,
vector<pair<int,int>>, compare > pq;

  • 1 65
  • 2 99
  • 5 23
    ์œผ๋กœ ์ •๋ ฌ ํ•œ ์ƒํƒœ์—์„œ
    ๊ฐ€๋ฐฉ๋„ 2 10 ์ด๋ ‡๊ฒŒ ์ •๋ ฌ ๋˜๊ฒ ์ง€

    ์ž˜๋ชป์ƒ๊ฐํ•œ ๋ถ€๋ถ„.

    ๊ฐ€๋ฐฉ ์ „์ฒด ๊ฐฏ์ˆ˜๋งŒํผ for๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ ์ฆ‰ ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๊ฐ€ 2์ผ ๋•Œ
    ๊ฐ€๋ฐฉ 2๊ฐœ๋ฅผ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์Œ. (1 ,65) , (2, 99) -> ์—ฌ๊ธฐ์„œ ์ตœ๋Œ€์˜ money๋ฅผ ๋ฝ‘๊ณ 
    ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๋ฅผ 10์œผ๋กœ ๋ณ€๊ฒฝ (5,23) ์—์„œ ์ตœ๋Œ€์˜ money๋ฅผ ๋ฝ‘์œผ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ
    -> ์‹คํ–‰ํ•˜๊ณ  ๋‚˜์„œ ์ž˜๋ชป ์ƒ๊ฐํ–ˆ๊ตฌ๋‚˜๋ฅผ ๊นจ๋‹ฌ์Œ. -> ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹ต์€ 122๊ฐ€ ๋‚˜์˜ด.
    : pq๋ฅผ pop ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ–ˆ๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ๋ง๊ณ , ๋ฐ˜๋Œ€๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•จ.

    ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ

    ๋ณ€๊ฒฝ ์ .

    ๋ฐ˜๋Œ€๋กœ pq ์—๋‹ค๊ฐ€ ์ตœ๊ณ ๊ฐ’์„ ์šฐ์„ ์œผ๋กœ ํ•ด์„œ ๋ˆ„์ ํ–ˆ๋‹ค๊ฐ€ ๊ฐ€๋ฐฉ์˜ ๊ฐฏ์ˆ˜๋งŒํผ
    pq.pop() ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ.

#include <iostream>
using namespace std;


#include <vector>
#include <queue>

struct compare
{
	bool operator()(pair<int,int>& a, pair<int,int>& b)
	{
		if (a.first == b.first)
		{
			return a.second < b.second;
		}
		else
			return a.first > b.first;
	}
};


int main()
{
	int n, k;

	cin >> n >> k;

	priority_queue<pair<int,int> ,
	vector<pair<int,int>>, compare > pq;
	//vector<gem> gems(n);
	// ๊ฐ ๋ณด์„ n๊ฐœ๋Š”๋ฌด๊ฒŒ m๊ณผ ๊ฐ€๊ฒฉ v๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.
	int a, b;
	for (int i = 0; i < n; ++i)
	{
		cin >> a >> b;
		pq.push(make_pair(a, b));
	}

	//while (!pq.empty())
	//{
	//	auto iter = pq.top();
	//	pq.pop();
	//
	//	//cout << iter.first << "  " << iter.second << endl;
	//}

	// ์ƒ๋•์ด๊ฐ€ ํ›”์น ์ˆ˜ ์žˆ๋Š” ๋ณด์„ ๊ฐ€๊ฒฉ์˜ ํ•ฉ์˜ ์ตœ๋Œ€๊ฐ’.

	vector<int> bags(k);
	for (int i = 0; i < k; ++i)
	{
		cin >> bags[i];
	}
	sort(bags.begin(), bags.end());
	//for (int i = 0; i < bags.size(); ++i)
	//{
	//	cout << bags[i] << endl;
	//}
	// ๋ฌด๊ฒŒ๊ฐ€ ์•„๋‹ˆ๋ผ, ์ตœ๋Œ€์˜ ๋ณด์„ ๊ฐ€๊ฒฉ์ด๋‹ˆ๊นŒ. 
	// money ์œ„์ฃผ๋กœ ์ •๋ ฌ์„ ์‹œํ‚ค์ž. ๊ทธ๋Ÿฌ๋ฉด์„œ 
	// 

	// bags ๋„ ๋ฌด๊ฒŒ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์œ„์น˜ํ•˜์ž.

	// ๋ฌด๊ฒŒ๊ฐ€ ์ž‘์„์ˆ˜๋ก ๋” ๋งŽ์€ ๋ณด์„์„ ๋‹ด์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž„. 

	// ์•— ๊ฐ€๋ฐฉ์—๋Š” ์ตœ๋Œ€ ํ•œ๊ฐœ์˜ ๋ณด์„๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. 

	// 30๋งŒ * 30๋งŒ -> 30 30 10000 10000 -> 900 100000000

	// 1 65
	// 2 99
	
	// 2 

	// 30๋งŒ 30๋งŒ ๋Œ๋ฆฌ๊ธฐ์—๋Š” ์‹œ๊ฐ„๋ณต์žก๋„ ์ดˆ๊ณผ์ด๋‹ˆ๊นŒ
	// pq์—๋‹ค๊ฐ€ ๋„ฃ์œผ๋ฉด ์ตœ๊ณ ์˜ ์ƒํƒœ๋ฅผ ๋ฝ‘์•„๋‹ค ํ™•์ธํ•˜๋Š” ์‹์œผ๋กœ ํ•ฎ.

	// ๋ฌด๊ฒŒ ์œ„์ฃผ๋กœ ํ•ด์•ผ๊ฒ ๋‹ค.
	// ๊ฐ€๋ฐฉ๋„ ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜์ž.

	// ๋ฌด๊ฒŒ๋กœ ๊ฐ€์ž. 
	// ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๋ž‘ gem ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ
	// ๋™์ผํ• ๋•Œ๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ตœ๊ณ ์˜ ์ˆ˜๋‹จ์„ ๋ฝ‘์ž. 
	// -> ๊ฐ€๊ฒฉ์ด ์ตœ๋Œ€์ธ๊ฑฐ๋ฅผ ์–ป์ž. 
	int ret = 0;
	for (int i = 0; i < bags.size(); ++i)
	{
		int mmax = -1;
		// ๊ฐ€๋ฐฉ ๋งจ์•ž์˜ ์ธ๋ฑ์Šค๋ฅผ ํƒ€๊ฒŸ์œผ๋กœ ํ•ด์„œ
		// pq ๋บ‘๋บ‘์ด ๋Œ๋ฆฌ๋ฉด์„œ ์ตœ๋Œ€์˜ money๋ฅผ ์–ป์ž. 

		
		{
			while (!pq.empty() && pq.top().first <= bags[i])
			{
				auto iter = pq.top();
				pq.pop();

				if (mmax < iter.second)
				{
					mmax = iter.second;
				}

			}
		}
		

		if(mmax != -1)
			ret += mmax;	

	}
	cout << ret << endl;
}

2๋ฒˆ์งธ ํ’€์ด : 240205

: bags์˜ for๋ฌธ ๋Œ๋ฆด ๋•Œ pq์— ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ ์žํ•จ.
์กฐ๊ฑด์— ํ•ด๋‹นํ•  ๊ฒฝ์šฐ, pq์—๋‹ค๊ฐ€ ๋„ฃ์ž.
-> ํ•˜๋‹ค ๋ณด๋‹ˆ๊นŒ index๋งŒํผ while ๋ฌธ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์‹ ์ถ”๊ฐ€๋จ.
๋„ฃ์€ ํ›„์— ์ตœ๊ณ ์˜ money๊ฐ€ ์œ„์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ์ƒํƒœ์—์„œ bags์˜ ๊ฐฏ์ˆ˜๋งŒํผ๋งŒ ret์— ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ ์ž ํ•จ.

-> ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด 3ํผ์„ผํŠธ์—์„œ ํ‹€๋ฆผ.
: ํ‹€๋ฆฐ ์ฝ”๋“œ๋Š” ์™ธ๋ถ€์—์„œ while๋ฌธ ๋Œ๋ฆฌ๋ฉด์„œ ๋ˆ„์ ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

์ค‘์š”! ์™œ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋ƒ...

์™œ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š๋ƒ์— ๋Œ€ํ•ด์„œ...
๋‚˜์ฒ˜๋Ÿผ ํ•˜๊ฒŒ ๋˜๋ฉด, ์กฐ๊ฑด์‹์ด ์ถ”๊ฐ€๋˜๊ณ ,
๋˜ ๋‹ค์‹œ pq์— ๋„ฃ์–ด์ง„ ๊ฐ’์— ๋Œ€ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ถ”๊ฐ€๋จ. pq์— ์ด 30๋งŒ๊ฐœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ.
(๋ฌธ์ œ ์กฐ๊ฑด์‹์— ์˜ํ•ด) , ์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„ ์ตœ์•…์— 30๋งŒ์ด ์ถ”๊ฐ€๋จ.
-> ์ฐจ๋ผ๋ฆฌ ์œ„ bags์˜ for๋ฌธ์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„ pq.pop() 1๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ.
์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ฉด 30๋งŒ์„ ์•„๋‚„ ์ˆ˜ ์žˆ์Œ.



#include <iostream>
using namespace std;
#include <algorithm>

#include <vector>
#include <queue>

struct compare
{
	bool operator()(pair<int,int>& a, pair<int,int>& b)
	{
		if (a.first == b.first)
		{
			return a.second < b.second;
		}
		else
			return a.first > b.first;
	}
};


int main()
{
	int n, k;

	cin >> n >> k;

	vector<pair<long long, long long>> gems(n);
	// ๊ฐ ๋ณด์„ n๊ฐœ๋Š”๋ฌด๊ฒŒ m๊ณผ ๊ฐ€๊ฒฉ v๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.
	int a, b;
	for (long long i = 0; i < n; ++i)
	{
		cin >> gems[i].first;
		cin >> gems[i].second;
	}
	sort(gems.begin(), gems.end());
	
	vector<long long> bags(k);
	for (long long i = 0; i < k; ++i)
	{
		cin >> bags[i];
	}
	sort(bags.begin(), bags.end());
	
	long long ret = 0;
	long long index = 0;
	long long cnt = 0;
	priority_queue<long long> pq;
	for (long long i = 0; i < bags.size(); ++i)
	{
		int mmax = -1;
		
		while (index < gems.size() 
			&& bags[i] >= gems[index].first)
		{
			pq.push(gems[index].second);
			index++;

			if (index >= gems.size())
				break;
		}
		

		//if (!pq.empty())
		//{
		//	ret += pq.top();
		//	pq.pop();
		//}
	}
	
	while (!pq.empty())
	{
		//cout << pq.top() << endl;
		ret += pq.top();
		pq.pop();
		cnt++;
		if (cnt == bags.size())
			break;
	}
	cout << ret << endl;
}

3๋ฒˆ์งธ ํ’€์ด : 240205

https://www.acmicpc.net/submit/1202/72976274


์ด์ „ ํ’€์ด... ๐Ÿ˜œ๋งž์™œํ‹€??

โœจ 7 ํผ์„ผํŠธ์—์„œ ํ‹€๋ฆผ.

: ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ top์ด ๋‚ฎ๊ฒŒ ์„ค์ •์„ ํ•˜๊ณ , bag์˜ ๊ฐฏ์ˆ˜์— ๋งž์ง€ ์•Š๋‹ค๋ฉด?
pop์„ ํ•œ ํ›„, ํ•œ๋ฒˆ์— ๋”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ–‡์Œ.
-> 7ํผ์„ผํŠธ์—์„œ ํ‹€๋ฆผ.

: ๋‘๊ฐœ๋กœ ๋ถ„๋ฅ˜ํ–ˆ๋”๋‹ˆ ํ‹€๋ฆผ..

์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

  • ์ด ์ƒ๊ฐ๋„ ๋งž์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ, pq์— ๋„ฃ๋Š” ๋ถ€๋ถ„๊ณผ
    sum์— ๋ˆ„์ ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋‚˜๋‰˜์–ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•จ.
    -> pq์— ๋ณด์„์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜ 30๋งŒ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ.
    ๋ถ„๋ฆฌํ•ด์„œ ํ•˜๋ฉด 30๋งŒ๋ฒˆ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์ž„.

๐Ÿ’ฅ50ํผ์„ผํŠธ์—์„œ ํ‹€๋ฆผ.

  • ์กฐ๊ฑด์‹ ์ฒ˜๋ฆฌ ์•ˆํ•˜๋ฉด. ํ‹€๋ฆผ.
    : ๋™๊ทธ๋ผ๋ฏธ ๋ถ€๋ถ„ ์ฒ˜๋ฆฌํ•˜๋‹ˆ๊นŒ ๋งž์Œ.

ํ•ต์‹ฌ

: ๋ฌธ์ œ์˜ ๊ด€๊ฑด์ด ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—
๊ฐ€๋ฐฉ ํ•˜๋‚˜ ์™„๋ฃŒ๋ ๋•Œ๋งˆ๋‹ค ๊ฐ€์žฅ ํฐ๊ฐ’ ํ•˜๋‚˜๋งŒ ์ถ”์ถœํ•˜์ž!

  • ์ค‘๊ฐ„๋‹จ๊ณ„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ , ๋ฐ”๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์ž‡๋Š”์ง€๋ฅผ ํ™•์ธํ•˜์ž.

๋งž๋Š” ํ’€์ด

: ์œ„์˜ ์ƒ๊ฐ๋ณด๋‹ค๋Š” pq์˜ top์— ์ตœ๋Œ€๊ฐ’์œผ๋กœ ์„ค์ •์„ ํ•˜๊ณ ,
๊ฐ€๋ฐฉ ๋ฌด๊ฒŒ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ, ๊ทธ ๋ถ€๋ถ„์—์„œ ํ•œ๋ฒˆ๋งŒ ๋ˆ„์ ํ•˜๋Š” ์กฐ๊ฑด์œผ๋กœ ํ•˜๋Š”
๊ฒƒ์ด ์˜คํžˆ๋ ค ํšจ์œจ์ ์ž„.

  • ์ ‘๊ทผ๋ฐฉ๋ฒ• 1๋ฒˆ : pq๋ฅผ ๋‚ฎ๊ฒŒ.
    ๊ฐ€๋ฐฉ ๋ฌด๊ฒŒ : 2, 10
    ๋ณด์„ 1-65 , 2-99 , 5-23์—์„œ
    ๊ฐ€๋ฐฉ ๋ฌด๊ฒŒ 2 ์ข…๋ฃŒ : top : 65 99
    ๊ฐ€๋ฐฉ ๋ฌด๊ฒŒ 10 ์ข…๋ฃŒ : top : 23 65 99
    bag์˜ for๋ฌธ ๋๋‚˜๊ณ  bag์˜ ์‚ฌ์ด์ฆˆ (2๊ฐœ) ์— ๋งž์ถฐ์„œ pq.pop์„ ํ•œ๋ฒˆ๋งŒ ํ•˜๊ธฐ
    -> 65 , 99๋ฅผ ๋ˆ„์ ํ•จ.

  • ์ ‘๊ทผ๋ฐฉ๋ฒ• 2๋ฒˆ : pq๋ฅผ ๋†’๊ฒŒ
    ๊ฐ€๋ฐฉ ๋ฌด๊ฒŒ : 2, 10
    ๋ณด์„ 1-65 , 2-99 , 5-23์—์„œ
    ๊ฐ€๋ฐฉ ๋ฌด๊ฒŒ 2์ข…๋ฃŒ : top : 99 65
    -> ์กฐ๊ฑด๋ฌธ ๋งˆ์น˜๊ณ , ๊ฐ€์žฅ ํฐ 99๋ฅผ ๋ˆ„์ ์‹œํ‚ด
    ๊ฐ€๋ฐฉ ๋ฌด๊ฒŒ 10 ์ข…๋ฃŒ : top : 65 23
    -> ์กฐ๊ฑด๋ฌธ ๋งˆ์น˜๊ณ  ๊ฐ€์žฅ ํฐ 65๋ฅผ ๋ˆ„์ ์‹œํ‚ด.

=> ๋ฌด์—‡์ด ๋” ํšจ์œจ์ ์ด ์‹œํ€€์Šค์ผ๊นŒ? ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด , ์ ‘๊ทผ ๋ฐฉ๋ฒ• 2๋ฒˆ์ด
ํ›จ์”ฌ ํšจ์œจ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Œ.


1๋ฒˆ์งธ ํ’€์ด์ „๋žต

// ํ’€์ด์ „๋žต
// 1. pair ๊ฐ’์„ money ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์ž
// ์™œ๋ƒํ•˜๋ฉด? ๊ฐ€์žฅ ํฐ ๋ณด์„ ๊ฐ€๊ฒฉํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ.
// 2. ๊ฐ€์žฅ ํฐ money๋ฅผ ๋ฝ‘๊ธฐ ์œ„ํ•ด์„œ
// ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์œ„๋กœ ์˜ฌ๋ฆฌ์ž. ์ฆ‰, ๋‚ด๋ฆผ ์ฐจ์ˆœ์œผ๋กœ
// ์™œ๋ƒํ•˜๋ฉด? ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด, money๊ฐ€ ๊ฐ€์žฅ ํฐ๊ฐ’์ด
// ๋ฌด๊ฒŒ๊ฐ€ ํด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž„.

๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด . 7%์—์„œ ํ‹€๋ฆผ.
-> ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  ์™œ ํ‹€๋ ธ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์ž.

์šฐ๋””๋ฅด๊ธ‰ ํƒœ์„ธ ์ „ํ™˜์ด ํ•„์š”ํ•จ.
--> ์ •๋ ฌ๊ณผ pq๋ฅผ ์‚ฌ์šฉํ•˜์ž.

1๋ฒˆ์งธ ํ’€์ด : pq ์‚ฌ์šฉ์•ˆํ•˜๊ณ , 1๋ฒˆ์งธ๋กœ ํ’€์—ˆ์„ ๋•Œ

-> 7%์—์„œ ํ‹€๋ฆผ.

#include <iostream>
using namespace std;
#include <vector>
#include <string>
#include <algorithm>
#include <map>
#include <queue>



int main()
{
	//30๋งŒ 30๋งŒ 

	// 23 5
	// 65 1
	// 99 2

	// 99 2
	// 65 1
	// 23 5

	// 1 65
	// 2 99
	// 5 23

	// 5 23
	// 2 99 
	// 1 65
	
	// 2 
	//10

	// 10
	// 2
	
	// ํ’€์ด์ „๋žต 
	// 1. pair ๊ฐ’์„ money ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์ž
	// ์™œ๋ƒํ•˜๋ฉด? ๊ฐ€์žฅ ํฐ ๋ณด์„ ๊ฐ€๊ฒฉํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ.
	// 2. ๊ฐ€์žฅ ํฐ money๋ฅผ ๋ฝ‘๊ธฐ ์œ„ํ•ด์„œ 
	// ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์œ„๋กœ ์˜ฌ๋ฆฌ์ž. ์ฆ‰, ๋‚ด๋ฆผ ์ฐจ์ˆœ์œผ๋กœ 
	// ์™œ๋ƒํ•˜๋ฉด? ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด, money๊ฐ€ ๊ฐ€์žฅ ํฐ๊ฐ’์ด
	// ๋ฌด๊ฒŒ๊ฐ€ ํด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž„.

	long long n, k;
	cin >> n >> k;

	vector<pair<long long, long long>>v(n);
	for (long long i = 0; i < n; ++i)
	{
		cin >> v[i].second >> v[i].first;
	}

	sort(v.begin(), v.end(), greater<pair<long long, long long>>());

	//cout << "๋ณด์„์˜ ๋ฌด๊ฒŒ์™€ " << endl;
	//for (auto iter : v)
	//{
	//	cout << iter.first << ' ' << iter.second << endl;
	//}

	vector<long long >bag(k);
	// ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ ์ž…๋ ฅํ•˜์ž.
	for (long long i = 0; i < k; ++i)
	{
		cin >> bag[i];
	}

	// ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•จ.
	sort(bag.begin(), bag.end(), greater<long long>());

	//for (auto iter : bag)
	//	cout << iter << endl;

	long long idx = 0;
	long long res = 0;
	//for (int i = 0; i < bag.size(); ++i)
	{
		for (long long j = 0; j < v.size(); ++j)
		{
			long long weight = v[j].second;
			if (weight < bag[idx])
			{
				++idx;
				res += v[j].first;
			}

			if (idx == bag.size())
				break;
		}
	}


	cout << res;


}

์œ„์—๊ฑฐ ์•ˆ๋˜๋‹ˆ๊นŒ ์šฐ๋””๋ฅด๊ธ‰ ํƒœ์„ธ์ „ํ™˜์ด ํ•„์š”ํ•จ!

: ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๋ฐ˜๋ก€๊ฐ€ ์žˆ๋Š”๋“ฏํ•จ.

2๋ฒˆ์งธ ํ’€์ด

1) ๋ณด์„์„ ๋ฌด๊ฒŒ - ๊ฐ€๊ฒฉ ์œผ๋กœ ํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋†“์ž.
2) ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๋„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋†“๊ณ .

๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ๋ณด๋‹ค ์ดํ•˜์ธ ๋ณด์„์˜ ๋ฌด๊ฒŒ๋ฅผ ์ฒดํฌํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํฐ ๊ฐ€๊ฒฉ์„
์บ์น˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์ž.
-> ์ž˜๋ชป๋œ ์ƒ๊ฐ!

  • ๋ฐ˜๋ก€ : ๋ฌธ์ œ ํ‘ธ๋Š”๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ง€์‹
    ๊ฐ€๋ฐฉ์˜ ๋ฌด๊ฒŒ 2 , 10
    ๋ณด์„ (2,97), (2,67) , (10,5)
    ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ
    ๊ฐ€๋ฐฉ 2์—๋‹ค๊ฐ€ ๋„ฃ์„๋•Œ (2,97)๋งŒ ๋„ฃ๊ณ , (2,67)์„ ๋ฒ„๋ฆฌ๋ฉด ์•ˆ๋จ!
    ์™œ๋ƒํ•˜๋ฉด ๊ทธ ๋‹ค์Œ์—
    ๊ฐ€๋ฐฉ 10์—๋‹ค๊ฐ€ (10,5) ๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด
    -> ์ตœ๋Œ€๊ฐ’์ด ์•ˆ๋‚˜์˜ด.
    ๋”ฐ๋ผ์„œ ์šฐ์„ ์ˆœ์œ„ ํ์—๋‹ค๊ฐ€ ๋จผ์ € ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋„ฃ์–ด๋†“๊ณ , pop์€ ์•ˆํ•œ ์ƒํƒœ์—์„œ
    (10, 5)๋ฅผ ๋„ฃ์–ด๋†“์€ ์ƒํƒœ์—์„œ ๋น„๊ตํ•˜์ž๋Š” ๊ฒƒ์ž„.
    ์šฐ์„ ์ˆœ์œ„ ํ ํŠน์„ฑ์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’, ๊ฐ€์žฅ ํฐ ๊ฐ’์„ top()์— ์œ„์น˜์‹œํ‚ค๋ฏ€๋กœ
    pop์˜ ๊ฒฝ์šฐ๋Š” result ๊ฐ’์— ๋ˆ„์ ํ• ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜์ž.
    ๋งŒ์•ฝ ์—ฌ๊ธฐ์„œ (2,97) ๊ณผ (2,67)์„ ๋น„๊ตํ•ด์„œ ์šฐ์„ ์ˆœ์œ„ ํ์— (2,97) ๋งŒ ๋„ฃ๋Š”๋‹ค๋ฉด
    ๋ฌธ์ œ๋‹ค!

์•Œ์•„์•ผ ํ•  ์ .

pq์— ๋„ฃ๋Š”๋‹ค๋ฉด, ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋„ฃ์œผ๋ฉด, ๋‚˜์ค‘์— ํฐ๊ฐ’ ๋น„๊ตํ•˜๋”๋ผ๋„,
์ด๋ฏธ pq์— ๋„ฃ๊ฒŒ ๋˜๋ฏ€๋กœ, ๋ฌธ์ œ๊ฐ€ ์—†์Œ.

์ฃผ์˜ํ•  ์ .

  1. long long
  2. ๋ฒ”์œ„ ์กฐ๊ฑด j < n;
profile
๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด