๐Ÿ“ฆ Chango/๐Ÿฃ EDOC

[BOJ][C++] ๋ฐฑ์ค€ 11256๋ฒˆ: ์‚ฌํƒ•

์„ ๋‹ฌ 2021. 11. 16. 23:56
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/11256

 

11256๋ฒˆ: ์‚ฌํƒ•

๋‹น์‹ ์€ ์‚ฌํƒ• ๊ณต์žฅ์˜ ์ฃผ์ธ์ด๋‹ค. ๋‚ ๋งˆ๋‹ค, ๋‹น์‹ ์€ J๊ฐœ์˜ ์‚ฌํƒ•์„ ๊ฐ€๊ฒŒ์— ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์ƒ์ž์— ํฌ์žฅํ•ด์•ผ ํ•œ๋‹ค. ๋‹น์‹ ์€ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ์ƒ์ž N๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‹น์‹ ์€ ํŽธ๋ฆฌ๋ฅผ ์œ„ํ•ด ์ƒ์ž๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์“ฐ

www.acmicpc.net

 

๋ฌธ์ œ

๋‹น์‹ ์€ ์‚ฌํƒ• ๊ณต์žฅ์˜ ์ฃผ์ธ์ด๋‹ค. ๋‚ ๋งˆ๋‹ค, ๋‹น์‹ ์€ J๊ฐœ์˜ ์‚ฌํƒ•์„ ๊ฐ€๊ฒŒ์— ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์ƒ์ž์— ํฌ์žฅํ•ด์•ผ ํ•œ๋‹ค.

๋‹น์‹ ์€ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ์ƒ์ž N๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‹น์‹ ์€ ํŽธ๋ฆฌ๋ฅผ ์œ„ํ•ด ์ƒ์ž๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์“ฐ๋ ค๊ณ  ํ•œ๋‹ค. (๋ฐ•์Šค๋ฅผ ๋‹ค ์ฑ„์šธ ํ•„์š”๋Š” ์—†๋‹ค. ์ผ๋ถ€๋ถ„๋งŒ ์ฑ„์›Œ๋„ ๋œ๋‹ค.)

๋‹น์‹ ์ด ๊ณต์žฅ์—์„œ ๋‚˜์˜ค๋Š” ์‚ฌํƒ•์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ ์ƒ์ž์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ์ƒ์ž๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์“ธ ๋•Œ์˜ ์‚ฌ์šฉ๋˜๋Š” ์ƒ์ž ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ์‚ฌํƒ•๋“ค์„ ํฌ์žฅํ•  ๊ณต๊ฐ„์€ ์ถฉ๋ถ„ํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋œ๋‹ค.

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T (1 ≤ T ≤ 10)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์•„๋ž˜ ํ˜•์‹์„ ๋”ฐ๋ฅธ๋‹ค.

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์‚ฌํƒ•์˜ ๊ฐœ์ˆ˜ J์™€ ์ƒ์ž์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ J, N ≤ 1,000)

๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ๊ฐ ์ค„๋งˆ๋‹ค i๋ฒˆ์งธ ์ƒ์ž์˜ ์„ธ๋กœ ๊ธธ์ด Ri ๊ทธ๋ฆฌ๊ณ  ๊ฐ€๋กœ ๊ธธ์ด Ci๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ƒ์ž์˜ ํฌ๊ธฐ๋Š” ๋‹ค๋ฅธ ์ƒ์ž์˜ ํฌ๊ธฐ์™€ ๋˜‘๊ฐ™์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ƒ์ž์—๋Š” Ri * Ci๋ณด๋‹ค ๋” ๋งŽ์€ ์‚ฌํƒ•์„ ํฌ์žฅํ•  ์ˆ˜ ์—†๋‹ค. (1 ≤ Ri, Ci ≤ 10,000)

์ถœ๋ ฅ

์ถœ๋ ฅ์€ T๊ฐœ์˜ ์ค„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ์ค„๋งˆ๋‹ค i๋ฒˆ์งธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ์ตœ์†Œํ•œ์˜ ์ƒ์ž ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

ํ’€์ด

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    
    int t;
    cin >> t;
    
    while(t--){
        int j, n;
        cin >> j >> n;
        
        vector <int> box;
        for(int i=0; i<n; i++){
            int r, c;
            cin >> r >> c;
            box.push_back(r*c);
        }
        
        sort(box.begin(), box.end());
        
        int cnt = 0;
        for(int i=n-1; i>0; i--){
            j -= box[i];
            cnt++;
            
            if(j <= 0) break;
        }
        
        cout << cnt << "\n";
    }
    
    return 0;
}
๋ฐ˜์‘ํ˜•