Back to Blog List

[๋ฐฑ์ค€] [C++] ๐Ÿ’Ž ๋ณด์„ ๋„๋‘‘ 1202๋ฒˆ

๋ฌธ์ œ ์„ค๋ช…

Markdown Image

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด ๋ฌด์กฐ๊ฑด ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฐœ์ƒ.


์ ‘๊ทผ ๋ฐฉ๋ฒ•

์ž‘์€ ๊ฐ€๋ฐฉ๋ถ€ํ„ฐ ๋‹ด์•„์•ผ ํ•œ๋‹ค. -> ๊ฐ€๋ฐฉ์„ ์ •๋ ฌ

๊ฐ€๋ฐฉ์— ๋‹ด์„ ๋•Œ, ๊ฐ€๋ฐฉ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ค‘์— ๊ฐ€์žฅ ๊ฐ€์น˜๊ฐ€ ๋†’์€ ๊ฒƒ๋ถ€ํ„ฐ ๋‹ด์•„์•ผ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.


์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ด์šฉํ•œ ํ’€์ด

cpp
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define MAX 300001 /* ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข‹์€ ๋ฌธ์ œ ๊ฐ€๋ฐฉ์˜ ์šฉ๋Ÿ‰์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผํ’ˆ์ค‘์— ๊ฐ€์žฅ ๊ฐ€์น˜๊ฐ€ ๋†’์€ ๋ฌผํ’ˆ์„ ๋‹ด๋Š”๋‹ค. */ int N, K; pii jewerly[MAX]; int C[MAX]; priority_queue<int> pq; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N >> K; for (int i=0; i<N; i++){ cin >> jewerly[i].first >> jewerly[i].second; } for (int i=0; i<K; i++){ cin >> C[i]; } // ๋ฌด๊ฒŒ ์ˆœ์œผ๋กœ ์ •๋ ฌ sort(jewerly, jewerly+N); sort(C, C+K); int idx = 0; ll sum = 0; // ์ž‘์€ ๊ฐ€๋ฐฉ๋ถ€ํ„ฐ ์ตœ์ ์˜ ๊ฐ€์น˜๋ฅผ ๋„ฃ๊ธฐ for (int i = 0; i < K; i++) { // ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค pq์— ์ผ๋‹จ ๋„ฃ๊ธฐ while (idx < N) { if (C[i] < jewerly[idx].first) break; // ๋ชป๋‹ด๋Š” ๋ฌด๊ฒŒ ๋‚˜์˜ค๋ฉด pq.push(jewerly[idx].second); idx++; } // ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ค‘์— ๊ฐ€์น˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋ฌผ๊ฑด ๋„ฃ๊ธฐ // ๋‚˜๋จธ์ง€๋Š” ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜๋Š”๊ฒŒ ์ค‘์š” if (!pq.empty()) { sum += pq.top(); pq.pop(); } } cout << sum; return 0; }

๋งˆ๋ฌด๋ฆฌ

๊ฐ€๋ฐฉ์„ ์ž‘์€ ์ˆœ์„œ๋กœ ์ •๋ ฌํ•œ ํ›„, ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๋ณด์„ ์ค‘์—์„œ ๊ฐ€์น˜๊ฐ€ ๋†’์€ ๊ฒƒ๋ถ€ํ„ฐ ๋„ฃ๋Š”๋‹ค๋Š” ์ƒ๊ฐ์ด ๋งค์šฐ ํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค.

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋“ค์€ ์ฐธ ์ƒ๊ฐํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค.

๊ทผ๋ฐ ์ฐธ ๋งค๋ ฅ์ ์ธ ๋ฌธ์ œ์ธ๊ฒƒ ๊ฐ™๋‹ค.